【问题标题】:Django order of message tags消息标签的Django顺序
【发布时间】:2019-05-01 18:01:43
【问题描述】:

我想知道是否可以使用额外的标签来更改 django 消息的消息标签的顺序。

from django.contrib import messages
messages.success(request, 'success message', extra_tags='safe')

在我的模板中我使用

{% if messages %}
  {% for message in messages %}
    <div class="alert alert-{{ message.tags }}">
     {% if 'safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %}
    </div>
  {% endfor %}
{% endif %}

这样,div 的类将是:

<div class="alert alert-safe success">

但我想切换两个标签,以便我可以使用引导类。

<div class="alert alert-success safe">

这可能吗?

【问题讨论】:

    标签: python django django-messages


    【解决方案1】:

    tags 属性在Message 类中定义,并对顺序进行硬编码。我认为改变它会很棘手。

    一种替代方法是在您的模板中使用{{ message.level_tag }}{{ message.extra_tags }} 而不是{{ message.tags }}

    <div class="alert alert-{{ message.level_tag }} {{ message.extra_tags|default_if_none:'' }}">
    

    如果您没有在 CSS 中使用 safe 类,则可以删除 {{ message.extra_tags|default_if_none:'' }} 部分。

    另一种方法是在视图中使用mark_safeformat_html 之类的方法:

    messages.success(request, mark_safe('success message'))
    

    那么你就不需要在模板中勾选message.extra_tags了:

    {% for message in messages %}
      <div class="alert alert-{{ message.tags }}">
       {{ message }}
      </div>
    {% endfor %}
    

    【讨论】:

    • {{ message.level_tag }} 正是我想要的。谢谢!
    猜你喜欢
    • 2016-08-22
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2016-09-12
    • 2018-09-29
    • 2023-03-26
    • 2019-09-23
    相关资源
    最近更新 更多