gpt4 book ai didi

python - 如何向 Django 站点中的匿名用户发送 session 消息?

转载 作者:太空狗 更新时间:2023-10-29 22:08:39 25 4
gpt4 key购买 nike

我经常使用以下方法在我的 Django 应用 View 中向登录用户显示有关用户操作的消息:

request.user.message_set.create("message to user")

我如何为匿名(未登录)用户做同样的事情?匿名用户没有 request.user,但 Django 文档说使用“session”中间件你可以做与上面代码相​​同的事情。链接到 session 中间件的 Django 文档声称这是可能的,但我无法从 session 文档中找到如何做到这一点。

最佳答案

这就是我所做的,使用上下文处理器:

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 条消息,但是这就是我真正需要的,所以它对我有用。它可以很容易地更改为允许多条消息等。

关于python - 如何向 Django 站点中的匿名用户发送 session 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/697902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com