当用户与平台进行交互时,用户可能希望告知他们操作的结果。Django有一个内置消息框架,允许你向用户显示一次性通知。
messages框架位于django.contrib.messages中,当你使用python manage.py startproject创建新项目时,它被包含在settings.py文件的默认INSTALLED_APPS列表中。
在项目的setting.py文件在中间件设置中包含一个名为django.contrib.messages.middleware.MessageMiddleware的中间件。
消息框架提供了一种向用户添加消息的简单方法。默认情况下,消息存储在cookie中(退回到会话存储),并在用户执行的下一个请求中显示它们。可以通过导入messages模块并使用简单的快捷方式添加新消息来在视图中使用消息框架,如下所示:
from django.contrib import messages
messages.error(request, 'Something went wrong')
通过使用add_message()方法或以下任何一种快捷方法创建新消息:
- success():操作成功后显示的成功消息
- info():提示消息
- warning():某些操作尚未失败,但可能即将失败
- error():操作未成功,或某些操作失败
- debug():将在生产环境中删除或忽略的调试消息
因为消息框架应用于项目,因此应该在基础模版为用户显示消息。
编辑base.html模版
{% if messages %}<ul class="messages">{% for message in messages %}<li class="{{ message.tags }}">{{ message|safe }}<a href="#" class="close">x</a></li>{% endfor %}</ul>
{% endif %}
messages框架包括上下文处理器django.contrib.messages.context_processors。在项目的TEMPLATES设置的context_processors列表中找到它。
将消息变量添加到请求上下文的消息。在模板中使用此变量向用户显示所有现有消息。
这里重构account应用,关于这个应用的更多内容,请查看
Django用户注册和用户配置扩展-CSDN博客
修改编辑视图以使用消息框架。
编辑account应用程序的views.py文件,导入消息
from django.contrib import messages@login_required
def edit(request):if request.method == 'POST':# ...if user_form.is_valid() and profile_form.is_valid():user_form.save()profile_form.save()messages.success(request, 'Profile updated '\'successfully')else:messages.error(request, 'Error updating your profile')else:user_form = UserEditForm(instance=request.user)# ...
当用户成功更新其配置文件时,添加一条成功消息。如果任何表单包含无效数据,将添加一条错误消息。
关于Django消息框架更多内容,可以查阅
消息框架 | Django 文档 | Django (djangoproject.com)