Ari*_*rif 12 django django-templates
我一直在使用Django Messaging Framework在模板中向用户显示消息.
我正在将它们输出到模板,如下所示:
<ul>
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
这会输出所有消息,错误,警告,成功等.我只是想知道是否有人有任何想法如何只显示错误消息:
<ul>
{% for message in messages.errors %}
<li>{{ message }}</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我提出的最好的是:
{% 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 %}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?提前致谢.
你可以把ifequal:
<ul>
{% for message in messages.errors %}
{% if 'error' in message.tags %}<li>{{ message }}</li>{% endif %}
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
可以使用MESSAGE_TAGS配置消息级别到消息标记的映射.
有点faff,但你可以通过添加一个自定义模板上下文处理器来实现这一点(参见https://docs.djangoproject.com/en/dev/ref/templates/api/) - 类似于
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}
Run Code Online (Sandbox Code Playgroud)
然后将其添加到settings.py中的TEMPLATE_CONTEXT_PROCESSORS列表中,然后在模板中执行以下操作:
<ul>
{% for message in error_messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
您可以对其进行变换以构建对消息的dict映射错误级别,然后遍历每个dict.
小智 5
Reto 的回答以这种方式对我有用
{% 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 %}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12268 次 |
最近记录: |