【问题标题】:Django add message to auth_viewDjango 向 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.')

【问题讨论】:

    标签: django django-views django-urls django-2.0


    【解决方案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 我认为可能是这种情况,因为这是在注销之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2021-03-11
    • 2011-11-21
    • 2018-12-03
    相关资源
    最近更新 更多