Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
login()根本不起作用-Django_Django_Authentication_Django Views - Fatal编程技术网

login()根本不起作用-Django

login()根本不起作用-Django,django,authentication,django-views,Django,Authentication,Django Views,我有一个django应用程序,我正在尝试将他们拥有的登录系统集成到框架中。我有以下代码行: user = authenticate(username=username, password=password) login(request, user) 在用户注册并创建帐户后创建新用户后,我立即运行此方法。我知道身份验证将成功,因为我刚刚创建了帐户,我知道它就在那里。我发现以下错误 login() takes 1 positional argument but 2 were given 在文档中

我有一个django应用程序,我正在尝试将他们拥有的登录系统集成到框架中。我有以下代码行:

user = authenticate(username=username, password=password)
login(request, user)
在用户注册并创建帐户后创建新用户后,我立即运行此方法。我知道身份验证将成功,因为我刚刚创建了帐户,我知道它就在那里。我发现以下错误

login() takes 1 positional argument but 2 were given
在文档中是说你传入一个请求和用户。。。那么为什么它不起作用呢。这让我快发疯了


以下是djangos网站上的文档:

login(request, user, backend=None)[source]¶
To log a user in, from a view, use login(). It takes an HttpRequest object and a User object. login() saves the user’s ID in the session, using Django’s session framework.

Note that any data set during the anonymous session is retained in the session after a user logs in.

This example shows how you might use both authenticate() and login():

from django.contrib.auth import authenticate, login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)
    if user is not None:
        login(request, user)
以下是我的完整注册方法:

def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            username = cd['username']
            password = cd['password']
            verify = cd['verify']
            email = cd['email']
            if password == verify:
                secure_password = make_password(password)
                user = User.objects.create(
                    username = username,
                    password = secure_password,
                    email = email,
                )
                user = authenticate(username=username, password=password)
                if user is not None:
                    login(request, user)
                else:
                    return redirect('home')
            else:
                form = SignupForm()
                parameters = {
                    'form':form,
                }
                return render(request, 'users/signup.html', parameters)
    else:
        form = SignupForm()
        parameters = {
            'form':form
        }
        return render(request, 'users/signup.html', parameters)

如果您尚未声明任何与
登录名同名的函数

然后

您错过了
身份验证
中的请求


如果您声明了一个名为
login
的函数,那么将其更改为其他函数

可能不太可能,但是您是否在代码中定义了另一个名为
login
的函数,它只需要一个参数?我现在绝对讨厌我的生活。我觉得自己智力迟钝。我有史以来最大剂量的大脑放屁。我有一个名为login的方法,用户可以通过提交表单登录到他的帐户。。。我将myviews.py中名为login的方法更改为user\u login。它在stacksonstacks上起了作用
user = authenticate(request, username=username, password=password)
    if user is not None:
        login(request, user)