1

我想知道是否可以使用额外的标签更改 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">

这可能吗?

4

1 回答 1

3

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

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

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

如果您不使用 中的safeCSS,则可以删除该{{ 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 %}
于 2018-11-29T16:31:25.927 回答