默认情况下,messages.success输出class='success'
。我需要覆盖它,删除它或将我的标签附加到它以满足我的需要。我找不到覆盖和追加它的方法一直没有成功。在这里,我尝试使用extra_tags
...
messages.success(request, '<a href="#">Item</a> Saved', extra_tags='html_safe alert alert-')
我尝试在alert
之前添加{{ message.tags }}
。
{% if messages %}
<ul class='messages'>
{% for message in messages %}
<li{% if message.tags %} class='{{ message.tags }}' role='alert'{% endif %}>{% if 'html_safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %}</li>
{% endfor %}
</ul>
{% endif %}
class='alert alert-success'
<div class="alert alert-success" role="alert">
<strong>Well done!</strong> You successfully read this important alert message.
</div>
当执行上述所有代码时,源代码输出以下内容。现在唯一的问题是alert-
和success
之间的空格。
<ul class='messages'>
<li class='html_safe alert alert- success' role='alert'><a href="#">Item</a> Saved</li>
</ul>
<li class="html_safe alert alert-success" role="alert"><a href="#">Item</a> Saved</li>
答案 0 :(得分:4)
我不明白为什么有理由将其删除。未使用的CSS类并不是一件可怕的事情。将其更改为:
messages.success(request, '<a href="#">Item</a> Saved', extra_tags='html_safe alert alert-success')
并且不用担心额外的success
课程。你有没有检查过Django的源代码?有时它会提供有关可以传递的额外kwargs
的提示。最终结果将是:
<li class="html_safe alert alert-success success" role="alert"><a href="#">Item</a> Saved</li>
似乎还有configure the default message tags的方式。
例如,在settings.py
:
from django.contrib.messages import constants as messages
MESSAGE_TAGS = {
messages.SUCCESS: 'alert alert-success',
}
但是有些Django项目和文档可能会认为这里的标记是success
,默认情况下,所以只有在你确信它是你需要的时候才改变它。否则,只需将Bootstrap类添加为额外标记即可。实际上,你不应该只是为了适应Bootstrap而覆盖Django的默认值。要么在customization到success
期间更改Bootstrap的成功等级,要么只使用两者。