首页 > 解决方案 > ValueError:Flask 中闪存中解包的值太多(预期为 2)

问题描述

ValueError (ValueError: too many values to unpack (expected 2))在我的Flask应用程序中有一个。我开始知道这是因为我使用 Flash 来显示带有类别的消息。

问题出现了,当我尝试这个时

{% with messages = get_flashed_messages() %}
  {% if messages %}
    {% for category, msg in messages %}

      <div class="alert {{category}}">
        <h1>{{category}}:</h1>
        <h4>{{msg}}</h4>
      </div>

    {% endfor %}
  {% endif %}
{% endwith %}

但是,如果我只是从 for 循环中删除类别,它会起作用,但类别不会!

{% with messages = get_flashed_messages() %}
  {% if messages %}
    {% for msg in messages %}

      <div class="alert {{category}}">
        <h1>{{category}}:</h1>
        <h4>{{msg}}</h4>
      </div>

    {% endfor %}
  {% endif %}
{% endwith %}

请帮我

标签: pythonflaskjinja2

解决方案


我猜您缺少在视图函数中设置第二个参数,即消息的类别(可能是errorwarning无论如何..)flash()

flash(u'Invalid password provided', 'error')

不要忘记设置with_categories=true功能get_flashed_messages()

{% with messages = get_flashed_messages(with_categories=true) %} {# --HERE--  #}
  {% if messages %}
    {% for category, msg in messages %}

      <div class="alert {{category}}">
        <h1>{{category}}:</h1>
        <h4>{{msg}}</h4>
      </div>

    {% endfor %}
  {% endif %}
{% endwith %}

参考这个文档


推荐阅读