下面是详细的“Django 使用内置 messages 的操作”的攻略:
什么是 Django messages
Django 的 messages 应用就是用来在应用程序的不同部分之间传递一些短消息,以便完成一些非持久化的任务,比如:将一个未认证用户重定向到登录页面、在表单提交后显示成功的消息、显示错误的消息等等。
如何在 Django 中使用 messages
1. 配置 settings.py
首先,需要在 INSTALLED_APPS
中添加 django.contrib.messages
INSTALLED_APPS = [
# ...
'django.contrib.staticfiles',
'django.contrib.messages', # 添加这行
# ...
]
还要在 MIDDLEWARE
中添加 django.contrib.sessions.middleware.SessionMiddleware
和 django.contrib.messages.middleware.MessageMiddleware
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', # 添加这行
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', # 添加这行
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
然后需要配置消息存储后端 MESSAGE_STORAGE
,可以选择使用 cookie 或者 session (默认为 session):
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage' # session 存储
# 或者
MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage' # cookie 存储
2. 向 views.py 中添加加入 messages 的逻辑
在 views.py 中,先导入 messages 模块:
from django.contrib import messages
然后在需要加入消息的地方添加:
messages.success(request, 'Your message has been added!')
其中 success
可以是以下任意一种:
- debug
- info
- success
- warning
- error
3. 在 HTML 模板中添加消息代码
最后,在需要显示消息的 HTML 模板中添加以下代码:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
示例 1: 在表单提交后显示成功的消息
首先,在 HTML 模板中,可以添加一个类似于下面这样的代码:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li {% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endif %}
</ul>
{% endif %}
然后在 views.py 文件中添加逻辑:
from django.shortcuts import render
from django.contrib import messages
def my_view(request):
# 处理表单的逻辑
form = MyForm(request.POST)
if form.is_valid():
# 如果表单验证通过,就执行其他逻辑,然后在提交后显示成功的消息
messages.success(request, '表单提交成功!')
return render(request, 'my_template.html', {'form': form})
# 如果表单验证不通过,就返回错误信息
else:
messages.error(request, '错误的表单!')
return render(request, 'my_template.html', {'form': form})
示例 2: 重定向到登录页面并显示消息
from django.contrib import messages
# ...
if form.is_valid():
# 如果表单验证通过,就重定向到登录页面并在重定向之前设置成功的消息
messages.success(request, '表单提交成功!')
return redirect('login')
在登录页面的相关 HTML 模板中添加消息代码即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django 使用内置messages的操作 - Python技术站