login()根本不起作用-Django
我有一个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 在文档中
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)