覆盖和自定义"django.contrib.auth.views.login"

use*_*270 3 python django

我正在尝试添加一个"让我登录"复选框到Django的默认登录视图.

这是我正在做的事情:

urls.py

url(r'^login/$',
    myuser_login,
    {'template_name': 'app_registration/login.html', 'authentication_form': MyAuthenticationForm},
    name='auth_login',
),
Run Code Online (Sandbox Code Playgroud)

views.py

from django.contrib.auth.views import login

def myuser_login(request, *args, **kwargs):
    if request.method == 'POST':
        if not request.POST.get('remember', None):
            request.session.set_expiry(0)

    login(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

所以基本上,我正在尝试将更多信息添加到我自己的视图中,只需调用Django的默认登录功能即可.当我这样做时,我收到此错误:

ValueError at /accounts/login/
The view app_registration.views.myuser_login didn't return an HttpResponse object.
Run Code Online (Sandbox Code Playgroud)

我检查了Django源代码,默认的contrib.auth.views.login函数显然返回了一个HttpResponse.

我该怎么办 :(((?

谢谢!!

use*_*907 8

所有django观点必须返回HttpResponse.你的观点没有返回任何东西.

你应该这样回来

def myuser_login(request, *args, **kwargs):
    if request.method == 'POST':
        if not request.POST.get('remember', None):
            request.session.set_expiry(0)

    return login(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

  • 如果你需要添加额外的上下文,你能说明这会是什么样子吗? (3认同)