Python 带有参数的Django登录页面
在我目前正在处理的Django应用程序中,同一用户登录到另一台设备后,用户会话被标记为多个,因此在页面重新加载后,第一个用户将注销并重定向到Python 带有参数的Django登录页面,python,django,Python,Django,在我目前正在处理的Django应用程序中,同一用户登录到另一台设备后,用户会话被标记为多个,因此在页面重新加载后,第一个用户将注销并重定向到admin/loginpage 需要在admin/login页面上显示关于此的第一个用户警告。我现在想到的唯一一件事是将GET参数添加到此页面url,在视图中检查它,并显示此警告。但是我找不到要重写的类/方法,我可以检查会话是否过期,并添加GET参数,比如multiple\u sessions=1url 我想,它看起来是这样的: def logout(sel
admin/login
page
需要在admin/login
页面上显示关于此的第一个用户警告。我现在想到的唯一一件事是将GET
参数添加到此页面url,在视图中检查它,并显示此警告。但是我找不到要重写的类/方法,我可以检查会话是否过期,并添加GET
参数,比如multiple\u sessions=1
url
我想,它看起来是这样的:
def logout(self, request, *args, **kwargs):
if request.session['multiple']:
super(CustomLogout, self).logout(request, redirect_to='/admin/login?multiple_session=1', *args, **kwargs)
else:
super(CustomLogout, self).logout(request, *args, **kwargs)
所以问题是,到底是什么方法负责将用户重定向到注销
对于实现这种行为的任何其他想法,我们将不胜感激 不确定我是否理解正确。您的问题是,在用户注销后如何向用户显示消息,对吗 Django可以做到这一点,向用户显示消息
from django.contrib import messages
def logout(self, request, *args, **kwargs):
if request.session['multiple']:
messages.info(request, 'Something multiple sessions.')
super(CustomLogout, self).logout(request, *args, **kwargs)
使用此自定义中间件类实现所需的行为:
class LogoutMiddleware(object):
def process_response(self, request, response):
if hasattr(request, 'user'):
if request.user.is_authenticated() and request.session.exists(request.session.session_key):
current_session = Session.objects.get(pk=request.session.session_key)
if current_session.old == True:
response_redirect = HttpResponseRedirect(reverse('logout'))
response_redirect.set_cookie('multiple-sessions', True)
return response_redirect
return response
然后,如果登录视图发现此cookie,它会在模板中显示警告。您是指
会话中间件吗?
?我使用了自定义中间件不完全是我想问的,但很有用,谢谢!