【问题标题】:How can I delete a request.session variable inside the Django HTML template?如何删除 Django HTML 模板中的 request.session 变量?
【发布时间】:2021-09-15 16:15:27
【问题描述】:

代码:

{% if request.session.message %}
<div class="alert alert-warning alert-dismissible fade show" role="alert">
    <i class="bi bi-check2-circle"></i> {{request.session.message}}
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endif %}
{% request.session.remove('message') %}

错误:

TemplateSyntaxError 在 / 无法解析剩余部分:来自 'request.session.remove('message') 的 '('message')'

【问题讨论】:

标签: django django-templates


【解决方案1】:

您正在使用会话机制向用户发布消息,但 Django 已经有相应的工具:Django's messages framework。实际上这些消息的默认存储机制会话变量。

但是,消息框架让 Django 可以轻松记录用户看到的消息,并可以轻松地将 多个 消息传递给用户。此外,可以为消息赋予一定的严重性级别。

您可以通过将'django.contrib.sessions.middleware.SessionMiddleware''django.contrib.messages.middleware.MessageMiddleware' 都指定为MIDDLEWARE setting [Django-doc] 来安装消息框架。此外,'django.contrib.messages' 应用程序应位于INSTALLED_APPS setting [Django-doc] 中。默认情况下已经是这种情况,对于TEMPLATES setting [Django-doc],您应该将'django.contrib.messages.context_processors.messages' 添加到'context_processors' 键,因此设置应如下所示:

# settings.py

# …

MIDDLEWARE = [
    # …,
    'django.contrib.sessions.middleware.SessionMiddleware',
    # …,
    'django.contrib.sessions.middleware.MessageMiddleware'
    # …
]

# …

INSTALLED_APPS = [
    # …,
    'django.contrib.messages',
    # …
]

# …

TEMPLATES = [
    {
       # …,
       'context_processors': [
           # …,
           'django.contrib.messages.context_processors.messages'!!!,
           # …
       ]
       # …
    }
]

# …

然后您可以向request 对象添加一条消息:

from django.contrib import messages

# …

messages.warning(request, 'Some warning')

然后在模板中,你可以渲染消息:

{% for message in messages %}
<div class="alert alert-warning alert-dismissible fade show" role="alert">
    <i class="bi bi-check2-circle"></i> {{ message }}
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}

【讨论】:

    猜你喜欢
    • 2021-03-14
    • 1970-01-01
    • 2016-04-22
    • 2019-10-18
    • 2011-09-26
    • 1970-01-01
    • 2018-02-11
    • 2012-10-11
    • 2011-11-27
    相关资源
    最近更新 更多