6

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

4

5 回答 5

12

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

首先,确保设置了消息框架(https://docs.djangoproject.com/en/dev/ref/contrib/messages/)。

然后将此代码包含在将被调用的某个地方(我倾向于将其放在 receivers.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.')
于 2013-10-15T11:06:36.513 回答
7

尝试:

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(r'^logout/$', YourCustomLogoutView.as_view(), {'next_page': settings.LOGOUT_REDIRECT_URL}, name='logout'),
于 2018-04-11T14:14:41.470 回答
3

尝试使用会话。可以更简单。

在注销视图中,在会话变量中设置一个条目,如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 %}
于 2012-07-09T11:58:44.957 回答
2

使用消息框架。 https://docs.djangoproject.com/en/dev/ref/contrib/messages/

于 2012-07-09T11:16:23.047 回答
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')
于 2020-11-01T05:53:23.763 回答