注销时的django消息
一旦用户注销站点,它应重定向到主页,并在页面顶部显示消息“U已成功注销”。有人帮我在主页上显示消息吗?使用消息框架。注销时的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 在模板中,可
尝试使用会话。可以更简单一些 在注销视图中,在会话变量中设置一个条目,如
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')