Django.contrib.messages 的消息处理器

2023-04-11 00:00:00 django 消息 处理器

Django.contrib.messages 是 Django 框架中用于处理基于 web 的消息的模块,在用户界面中经常使用,例如:

  • 验证表单时显示错误消息
  • 用户登录成功后显示欢迎消息
  • 操作成功后显示成功消息
  • 操作失败后显示错误消息

Django.contrib.messages 模块提供了一种简单且一致的方式来处理这些消息,它包括以下几个部分:

  • 存储消息:存储消息到 session 中
  • 显示消息:从 session 中获取消息并在页面上显示
  • 删除消息:在读取完消息后从 session 中删除消息

在项目中 settings.py 文件中,需要配置 Django.contrib.messages 的消息处理器:

# 必须要配置的设置
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

# 可选设置
MESSAGE_TAGS = {
    messages.DEBUG: 'debug',
    messages.INFO: 'info',
    messages.SUCCESS: 'success',
    messages.WARNING: 'warning',
    messages.ERROR: 'danger',
}

在视图函数中使用 messages 模块来存储消息,例如:

from django.contrib import messages

def my_view(request):
    messages.success(request, '操作成功')
    messages.error(request, '操作失败,请稍后再试')
    return render(request, 'my_template.html')

在模板中使用 messages 模块来显示消息,例如:

{% if messages %}
    <ul class="messages">
        {% for message in messages %}
            <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
        {% endfor %}
    </ul>
{% endif %}

以上代码将显示保存在 session 中的所有消息,也可以根据消息类型展示不同的样式,例如 success 标签代表操作成功,可以使用绿色背景标记。

演示代码如下:

from django.contrib import messages
from django.shortcuts import render

def index(request):
    messages.success(request, 'pidancode.com 欢迎您')
    messages.warning(request, '请不要在本站输入敏感信息')
    messages.error(request, '操作失败,请稍后再试')
    return render(request, 'index.html')

模板代码如下:

{% if messages %}
    <ul class="messages">
        {% for message in messages %}
            <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
        {% endfor %}
    </ul>
{% endif %}

当渲染 index.html 模板时,系统会根据存储在 session 中的消息生成相应的 HTML 代码,效果如下:

pidancode.com 欢迎您
请不要在本站输入敏感信息
操作失败,请稍后再试

相关文章