用户退出网站后,应重定向到主页,并在页面顶部显示“U已成功注销”的消息。有人帮我在主页上显示消息吗?
答案 0 :(得分:7)
您可以将user_logged_out信号与消息框架结合使用:
首先,确保设置了消息框架(https://docs.djangoproject.com/en/dev/ref/contrib/messages/)。
然后在将要调用的地方包含此代码(我倾向于将其放在receiver.py模块中,然后从已安装的应用程序中的models.py文件中导入它):
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, **kwargs):
messages.add_message(request, messages.INFO, 'Logged out.')
答案 1 :(得分:2)
答案 2 :(得分:2)
尝试使用会话。可以更简单。
在注销视图中,在会话变量中设置一个条目,如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 %}
答案 3 :(得分:0)
尝试:
from django.contrib.auth.views import LogoutView
class YourCustomLogoutView(LogoutView):
def get_next_page(self):
next_page = super(BSLogoutView, self).get_next_page()
messages.add_message(
self.request, messages.SUCCESS,
'You successfully log out!'
)
return next_page
在网址中:
url(r'^logout/$', YourCustomLogoutView.as_view(), {'next_page': settings.LOGOUT_REDIRECT_URL}, name='logout'),
答案 4 :(得分:0)
这是@andilabs答案的简化版本:
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)
在您的urls.py中:
path('logout/', views.UserLogoutView.as_view(), name='logout')