如何在 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 %}
当用户执行日志搜索后,如果搜索成功,就会提示用户“搜索成功,找到符合的记录!”。
相关文章