【问题标题】:Altering the default Django messages tag更改默认的 Django 消息标签
【发布时间】:2016-08-22 07:43:17
【问题描述】:

默认情况下,messages.success 输出class='success'。我需要覆盖它,删除它或将我的标签附加到它以满足我的需要。我一直未能找到一种方法来覆盖和附加它。在这里我尝试使用extra_tags...

views.py

messages.success(request, '<a href="#">Item</a> Saved', extra_tags='html_safe alert alert-')

detail.html

我尝试在{{ message.tags }} 之前添加alert

{% 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>

HTML页面源结果

当上面的所有代码都执行完毕后,源代码输出如下。现在唯一的问题是alert-success 之间的空格。

<ul class='messages'>
    <li class='html_safe alert alert- success' role='alert'><a href="#">Item</a> Saved</li>
</ul>

结束目标! - 任何人都可以在这里看到一个 hacky 或适当的解决方法吗?

<li class="html_safe alert alert-success" role="alert"><a href="#">Item</a> Saved</li>

【问题讨论】:

    标签: python html django


    【解决方案1】:

    我不明白为什么有理由删除它。未使用的 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 期间的 Bootstrap 成功类更改为 success,要么同时使用两者。

    【讨论】:

    • 谢谢杰米。我不太热衷于拥有未使用的 CSS 类的想法。我昨天玩了“配置默认消息标签”文档,默认的success 类仍然被包括在内。但是在阅读了您的评论后,我已将其添加到 settings.py 并且繁荣,成功!非常清晰...所以我通过删除 html li 中的所有标签来整理了很多东西。添加了html_safe 作为message.success 中唯一的extra_tags。并将MESSAGE_TAGS = { messages.SUCCESS: 'alert alert-success' } 添加到settings.py
    猜你喜欢
    • 1970-01-01
    • 2014-12-21
    • 2022-09-22
    • 1970-01-01
    • 2012-01-24
    • 2014-04-30
    • 1970-01-01
    • 2020-08-09
    • 2018-06-04
    相关资源
    最近更新 更多