这就是我所做的,使用上下文处理器:
project/application/context.py(检查消息并将它们添加到上下文中):
def messages(request):
messages = {}
if 'message' in request.session:
message_type = request.session.get('message_type', 'error')
messages = {'message': request.session['message'],
'message_type': message_type}
del request.session['message']
if 'message_type' in request.session:
del request.session['message_type']
return messages
project/settings.py(将上下文添加到TEMPLATE_CONTEXT_PROCESSORS):
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.request",
"django.core.context_processors.debug",
"django.core.context_processors.media",
"django.core.context_processors.auth",
"project.application.context.messages",
)
使用上述函数messages 将在每个请求上调用,并且它返回的任何内容都将添加到模板的上下文中。有了这个,如果我想给用户一个消息,我可以这样做:
def my_view(request):
if someCondition:
request.session['message'] = 'Some Error Message'
最后,在模板中你可以检查是否有错误要显示:
{% if message %}
<div id="system_message" class="{{ message_type }}">
{{ message }}
</div>
{% endif %}
消息类型仅用于设置样式,具体取决于它是什么(“错误”、“通知”、“成功”)以及设置方式,您一次只能为用户添加 1 条消息,但是这就是我真正需要的,所以它对我有用。它可以很容易地更改为允许多条消息等。