Django模板中匹配Flash消息标签及直接显示标签字符串的疑问
Django Messages 标签使用问题解答
一、视图层标签传递说明
你给出的视图代码messages.success(self.request, f'Success, your account has been deleted', 'success')是有效的:
- Django 的
messages.success()方法默认自带success标签,你手动传入第三个参数标签也没问题,若需自定义标签,该参数会覆盖默认值。 - 其他类型消息同理,比如
messages.warning()默认标签为warning,也可手动传入自定义标签。
二、模板层匹配标签的条件判断示例
模板中可通过遍历messages对象,借助message.tags属性获取标签,实现条件判断或样式匹配,示例代码如下:
{% for message in messages %} <!-- 用标签直接渲染样式类 --> <div class="alert alert-{{ message.tags }}"> {{ message }} </div> <!-- 针对不同标签做逻辑判断 --> {% if message.tags == 'success' %} <p>这是一条成功提示</p> {% elif message.tags == 'warning' %} <p>这是一条警告提示</p> {% else %} <p>这是其他类型的提示</p> {% endif %} {% endfor %}
只要视图层传递的标签和模板中判断的字符串一致,就能准确匹配对应消息类型。
三、无需条件判断直接显示标签字符串
完全可以直接显示标签字符串,无需写条件判断,直接在模板中输出{{ message.tags }}即可,示例:
{% for message in messages %} <div> <span>消息类型:{{ message.tags }}</span> <span>消息内容:{{ message }}</span> </div> {% endfor %}
页面会直接渲染出你传递的标签文本,比如success、warning等。
内容的提问来源于stack exchange,提问作者Wamz
相关产品推荐
相关产品推荐

