注销时的django消息

注销时的django消息,django,Django,一旦用户注销站点,它应重定向到主页,并在页面顶部显示消息“U已成功注销”。有人帮我在主页上显示消息吗?使用消息框架。 尝试使用会话。可以更简单一些 在注销视图中,在会话变量中设置一个条目,如session['just_logged_out']=True,并在主页视图中检查变量 try: just_logged_out = request.session.get('just_logged_out',False) except: just_logged_out = False 在模板中,可

一旦用户注销站点,它应重定向到主页,并在页面顶部显示消息“U已成功注销”。有人帮我在主页上显示消息吗?

使用消息框架。
尝试使用会话。可以更简单一些

在注销视图中,在会话变量中设置一个条目,如
session['just_logged_out']=True
,并在主页视图中检查变量

try:
  just_logged_out = request.session.get('just_logged_out',False)
except:
  just_logged_out = False
在模板中,可以使用

{% if just_logged_out %}  You are successfully logged out {% endif %}

您可以将用户注销信号与消息框架结合使用:

首先,确保消息框架已设置()

然后将此代码包含在将被调用的地方(我倾向于将其放入receivers.py模块中,然后从已安装应用程序中的models.py文件导入):

试着:

from django.contrib.auth.views import LogoutView

class YourCustomLogoutView(LogoutView):

    def get_next_page(self):
        next_page = super(YourCustomLogoutView, self).get_next_page()
        messages.add_message(
            self.request, messages.SUCCESS,
            'You successfully log out!'
        )
        return next_page
在URL中:

url(r'^logout/$', YourCustomLogoutView.as_view(), {'next_page': settings.LOGOUT_REDIRECT_URL}, name='logout'),

以下是@Andilab答案的简化版本:

from django.contrib import messages
from django.contrib.auth.views import LogoutView

class UserLogoutView(LogoutView):
    def dispatch(self, request, *args, **kwargs):
        if request.user.is_authenticated:
            messages.info(request, "You have successfully logged out.")
        return super().dispatch(request, *args, **kwargs)
在您的URL.py中:

path('logout/', views.UserLogoutView.as_view(), name='logout')

我尝试了代码消息。在保存后添加消息(request,messages.INFO,'Hello world.')。但消息未显示您需要添加代码以在模板中显示消息。阅读我发布的链接中的文档。尝试将
设置.MESSAGE_STORAGE
更改为
'django.contrib.messages.STORAGE.cookie.CookieStorage'
,这有帮助吗?django 2.2.10对我不起作用。该消息被添加到刚刚注销的用户,因此它不会在匿名注销重定向页面上弹出。我阅读了源代码并得出了相同的解决方案。但是方法名
get_next_page
现在所做的比名称所暗示的要多。我希望我们可以重写另一个方法,而不是
get\u next\u page
path('logout/', views.UserLogoutView.as_view(), name='logout')