【问题标题】:Why do my Django messages get duplicated?为什么我的 Django 消息会重复?
【发布时间】:2019-06-09 01:10:35
【问题描述】:

我正在使用 django 消息系统来显示敬酒消息。我试图阻止用户在未登录时访问“注销”,并显示警告祝酒词。当我第一次输入 url 时,它没有显示任何内容,但从第二次开始,它一直显示 2 条 toast 消息。

我尝试使用 this solution,但没有删除我的重复消息,而是不再显示任何内容。

def logout_request(request):
    if not request.user.is_authenticated:
        messages.warning(request, "You must log in to log out!")
        return redirect("/")

    logout(request)
    messages.info(request, "Logged out successfully!")
    return redirect("/")
<div class="message-wrapper">
{% for msg in messages %}
    <div class="toast" data-autohide="true" data-delay="1500">
        {% if msg.tags == 'success'%}
        <div class="toast-header toast-header-success">
            <strong class="mr-auto">Success</strong>
        {% elif msg.tags == 'info'%}
        <div class="toast-header toast-header-primary">
            <strong class="mr-auto">Information</strong>
        {% elif msg.tags == 'warning'%}
        <div class="toast-header toast-header-warning">
            <strong class="mr-auto">Warning</strong>
        {% elif msg.tags == 'error'%}
        <div class="toast-header toast-header-danger">
            <strong class="mr-auto">Error</strong>
        {% endif %}
            <button type="button" class="ml-2 mb-1 close button-close" data-dismiss="toast" aria-label="Close">
                <span aria-hidden="true">&times;</span>
            </button>
        </div>
        <div class="toast-body">
            {{ msg }}
        </div>
    </div>
{% endfor %}
</div>

【问题讨论】:

  • 在您的模板中,在 for 循环的顶部,打印 {{ msg.tags }} 以确保它是您所期望的。
  • 我尝试输入&lt;p&gt;{{msg.tags}}&lt;/p&gt;,标签是warning,这是我所期望的。问题是,我第一次尝试时没有显示任何内容,而是显示了标签和 1 个 toast 消息,第二次等之后,它显示了 2 个 toasts
  • Django 消息基于Cookies。这意味着,如果您应该删除 cookie。您应该每次都在模板中的消息上iterate。否则会重复!
  • 我已经使用了{% for msg in messages %},但我不知道为什么它只是跳过了我的第一条消息。

标签: python html django python-3.x django-views


【解决方案1】:

我仍然不知道为什么,但是当我更换我的笔记本电脑时,它完全符合我的预期。在我看来,我以前的笔记本电脑在缓存或其他方面存在一些问题。我删除了缓存数据并打开了开发工具,它真的很神奇。

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 2019-11-14
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多