首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示Django消息框架消息

显示Django消息框架消息
EN

Stack Overflow用户
提问于 2010-04-23 17:37:51
回答 6查看 13.2K关注 0票数 13

我一直在使用Django Messaging Framework向模板中的用户显示消息。

我将它们输出到模板,如下所示:

代码语言:javascript
复制
<ul>
    {% for message in messages %}
        <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>

这将输出所有的消息、错误、警告、成功等。我想知道是否有人知道如何只显示错误消息,例如:

代码语言:javascript
复制
<ul>
    {% for message in messages.errors %}
        <li>{{ message }}</li>
    {% endfor %}
</ul>

到目前为止,我想出的最好的是:

代码语言:javascript
复制
{% if messages %}
    {% for message in messages %}
        {% if forloop.first %}
            {% if message.tags == 'error' %}
                <div class="error">
                    <ul>
            {% endif %}
        {% endif %}

        <li>{{ message }}</li>

        {% if forloop.last %}
                </ul>
            </div>
        {% endif %}
    {% endfor %}
{% endif %}

有什么想法吗?提前谢谢。

EN

回答 6

Stack Overflow用户

发布于 2010-04-23 18:19:38

你可以放一个ifequal:

代码语言:javascript
复制
<ul>
    {% for message in messages.errors %}
        {% if 'error' in message.tags %}<li>{{ message }}</li>{% endif %}
    {% endfor %}
</ul>

消息级别到消息标签的映射可以使用MESSAGE_TAGS进行配置。

票数 9
EN

Stack Overflow用户

发布于 2012-07-13 06:22:35

有点花哨,但您可以通过添加自定义模板上下文处理器来实现这一点。https://docs.djangoproject.com/en/dev/ref/templates/api/ ) --类似于

代码语言:javascript
复制
def collect_error_messages(request):
    messages = get_messages(request)
    error_messages = [ m for m in messages if 'error' in m.tags]
    return {'error_messages': error_messages}

然后将其添加到settings.py中的TEMPLATE_CONTEXT_PROCESSORS列表,然后在模板中,您可以执行以下操作:

代码语言:javascript
复制
<ul>
    {% for message in error_messages %}
        <li>{{ message }}</li>
    {% endfor %}
</ul>

您可以在此基础上做一个变体,以构建一个将错误级别映射到消息的字典,然后迭代每个字典。

票数 5
EN

Stack Overflow用户

发布于 2013-04-30 01:45:29

雷托的回答对我来说是这样的

代码语言:javascript
复制
{% for message in messages %}
    {% if 'success' in message.tags %}

        <div class="alert alert-success">
            <a class="close" href="#" data-dismiss="alert">×</a>
            <strong>Success!</strong>

                {{ message }}

        </div>
    {% endif %}
{% endfor %}

{% for message in messages %}
    {% if 'error' in message.tags %}
        <div class="alert alert-error">
            <a class="close" href="#" data-dismiss="alert">×</a>
            <strong>Error!</strong>

                {{ message }}

        </div>
    {% endif %}
{% endfor %}
{% for message in messages %}
    {% if 'info' in message.tags %}
        <div class="alert alert-info">
            <a class="close" href="#" data-dismiss="alert">×</a>
            <strong>INFO!</strong>

                {{ message }}

        </div>
    {% endif %}
{% endfor %}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2697533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档