Django 向 auth_view 添加消息
Posted
技术标签:
【中文标题】Django 向 auth_view 添加消息【英文标题】:Django add message to auth_view 【发布时间】:2018-08-29 23:19:33 【问题描述】:是否可以在 urls.py 中传递 Flash 消息和路径?
由于我没有将auth_views
写入我的核心views.py 文件,我认为可能有一种简单的方法可以将它与请求一起传递。我更喜欢使用开箱即用的 auth_views,以便轻松更新我的 Django 版本。如果这是不可能的,那么我不会试图强迫它。检查了documentation,但没有找到任何关于消息的信息。
path('logout/', auth_views.logout, 'next_page': auth_views.login, name='logout'),
我想传递类似于下面的消息的内容,这样他们就不会觉得他们意外点击了登录或其他什么。
'messages.success(request, 'You have securely logged out of request.user.email. Thank you for visiting.')
【问题讨论】:
【参考方案1】:Django 有一个信号,您应该能够连接到该信号以执行此操作;
from django.contrib.auth.signals import user_logged_out
from django.dispatch import receiver
from django.contrib import messages
@receiver(user_logged_out)
def on_user_logged_out(sender, request, user, **kwargs):
if user:
msg = 'You have securely logged out email. Thank you for visiting.'.format(email=user.email)
else:
msg = 'You have securely logged out. Thank you for visiting.'
messages.add_message(request, messages.INFO, msg)
【讨论】:
谢谢 =) 我现在正在处理这个问题。有趣的是,当消息尝试运行时,用户对象不再可用,因此else:
正在运行。
@HashRocketSyntax 我认为可能是这种情况,因为这是在注销之后。以上是关于Django 向 auth_view 添加消息的主要内容,如果未能解决你的问题,请参考以下文章
Django Channels - 当组成员时无法直接向频道发送消息
如果不安装django.contrib.messages.middleware.MessageMiddleware,则无法添加消息
通过 celery 向 django-channels 发送消息
如何使用 Django Channels 3.0.0 向所有消费者发送消息?