繁体   English   中英

django login() 采用 1 个位置参数,但给出了 2 个

[英]django login() takes 1 positional argument but 2 were given

我正在使用最新版本的 django 和 python 3,当我登录时,我收到以下错误消息。

django login() 采用 1 个位置参数,但给出了 2 个

请在下面找到我的登录视图的代码。

from django.shortcuts import render, get_object_or_404,redirect
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login
from authentication.forms import LoginForm, ForgottenPasswordForm, ResetPasswordForm
from authentication.functions import send_user_reset_password_link, resend_password_reset_link
from authentication.models import ResetPassword
# Create your views here.

def login(request):
    error_message = None
    heading = 'Login Form'
    if request.method == 'POST':

        form = LoginForm(request.POST)
        if form.is_valid():

            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            remember_me = form.cleaned_data['remember_me']

            user = authenticate(request,username=username, password=password)

            if not request.POST.get('remember_me', None):
                #request.session.set_expiry(0)          
            if user is not None:
                login(request, user)
                return redirect('property_index',user.id)
            # A backend authenticated the credentials
            else:
                error_message = 'No login credentials found'
            # No backend authenticated the credentials

    form = LoginForm()
    return render(request,'authentication/forms/login.html',{
        'form':form,
        'error_message':error_message,
        'heading':heading

        })

麻烦的是:你覆盖了原来的django登录功能。 所以你应该改变导入。

from django.contrib.auth import authenticate, login as dj_login
#                                                  ^^^^^^^^

并使用

dj_login(request, user)

如果您的视图是类格式,您可能需要检查是否在 post\/get 函数中包含“self”obj。

"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM