[英]Django. Authentication (user returns None)
I'm trying to make sign in form using Django. 我正在尝试使用Django创建登录表单。 So I created a function in views and it looks like this: 所以我在视图中创建了一个函数,它看起来像这样:
def signin(request):
if request.method == 'POST':
form = SigninForm(request.POST)
if form.is_valid():
login = request.POST.get('login', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=login, password=password)
print(user)
if user is not None and user.is_active:
auth.login(request, user)
return HttpResponse("OK")
else:
return HttpResponse("ERROR")
else:
form = SigninForm()
return render(request, 'signin.html', {'form': form})
and it works (prints OK
and print(user)
returns the name of the user), but only for the user I created when I did syncdb
(superuser). 并且可以正常工作(打印OK
, print(user)
返回print(user)
名),但仅适用于在执行syncdb
(超级用户)时创建的用户。
however when I try to create users like this: 但是,当我尝试创建这样的用户时:
def signup(request):
if request.method == 'POST':
form = SignupForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
else:
form = SignupForm()
return render(request, 'signup.html', {'form': form})
it prints ERROR
when I try to sign in, and print(user)
returns None
当我尝试登录时它会打印ERROR
,并且print(user)
返回None
PS 聚苯乙烯
AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', )
in my settings.py
我在我的settings.py
添加了: AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', )
I have no idea what I'm doing wrong. 我不知道我在做什么错。 Will you please help me? 你能帮我吗?
When you use create_user function as 当您使用create_user函数作为
User.objects.create_user(username='username', password='password') User.objects.create_user(用户名='用户名',密码='密码')
, You do not need to do password encrypt before. ,您无需先进行密码加密。
It would be made auto. 它将被设为自动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.