Python 带有参数的Django登录页面

Python 带有参数的Django登录页面,python,django,Python,Django,在我目前正在处理的Django应用程序中,同一用户登录到另一台设备后,用户会话被标记为多个,因此在页面重新加载后,第一个用户将注销并重定向到admin/loginpage 需要在admin/login页面上显示关于此的第一个用户警告。我现在想到的唯一一件事是将GET参数添加到此页面url,在视图中检查它,并显示此警告。但是我找不到要重写的类/方法,我可以检查会话是否过期,并添加GET参数,比如multiple\u sessions=1url 我想,它看起来是这样的: def logout(sel

在我目前正在处理的Django应用程序中,同一用户登录到另一台设备后,用户会话被标记为多个,因此在页面重新加载后,第一个用户将注销并重定向到
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,它会在模板中显示警告。

您是指
会话中间件吗?
?我使用了自定义中间件不完全是我想问的,但很有用,谢谢!