如何在 Django 中使用 Django.contrib.messages 模块
Django.contrib.messages 模块是 Django 自带的一个消息提示模块,可以让我们在网站中向用户展示各种提示信息,例如成功、错误、警告等。本文将介绍如何在 Django 中使用 Django.contrib.messages 模块。
- 安装 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', ... ]
- 在视图函数中使用 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 是必须要传递的,它将会作为提示信息的上下文,第二个参数 '恭喜你,皮蛋编程注册成功!' 是我们要提示给用户的信息内容。
- 在模板中显示消息
在常用的 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 %}
当用户执行日志搜索后,如果搜索成功,就会提示用户“搜索成功,找到符合的记录!”。
相关文章