如何在 Django 中使用 Django.contrib.messages 模块

2023-04-11 00:00:00 模块 如何在 contrib

Django.contrib.messages 模块是 Django 自带的一个消息提示模块,可以让我们在网站中向用户展示各种提示信息,例如成功、错误、警告等。本文将介绍如何在 Django 中使用 Django.contrib.messages 模块。

  1. 安装 Django.contrib.messages

在 settings.py 文件中添加 'django.contrib.messages' 到 INSTALLED_APPS 中:

# settings.py

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

还需要在 MIDDLEWARE 中添加 'django.contrib.messages.middleware.MessageMiddleware':

# settings.py

MIDDLEWARE = [
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]
  1. 在视图函数中使用 Django.contrib.messages

在视图函数中使用 Django.contrib.messages 的步骤如下:

(1) 在视图函数中导入 messages 模块:

from django.contrib import messages

(2) 在需要提示信息的地方使用 messages 方法:

def my_view(request):
    messages.success(request, '恭喜你,皮蛋编程注册成功!')
    return render(request, 'my_template.html')

其中,第一个参数 request 是必须要传递的,它将会作为提示信息的上下文,第二个参数 '恭喜你,皮蛋编程注册成功!' 是我们要提示给用户的信息内容。

  1. 在模板中显示消息

在常用的 base.html 模板中添加以下代码:

<!-- base.html -->

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

当我们在视图函数中调用 messages 方法时,在模板中就会顺利地展示提示消息了。

这里以 'pidancode.com' 为例,展示在 Django 日志搜索的某个过程中,提示消息的实现:

# views.py

def post_message(request):
    messages.success(request, '搜索成功,找到符合的记录!')
    return redirect('/pidanlog/')

# search_results.html

{% extends 'pidanlog/base.html' %}

{% block content %}
<div class="container-fluid">
    <div class="row">
        <div class="col-md-12">
            {% if messages %}
            <ul class="messages">
            {% for message in messages %}
                <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message|safe }}</li>
            {% endfor %}
            </ul>
            {% endif %}
            <div class="card">
                ...
            </div>
        </div>
    </div>
</div>
{% endblock %}

当用户执行日志搜索后,如果搜索成功,就会提示用户“搜索成功,找到符合的记录!”。

相关文章