在创建登录和注册表单时,注册表单一直存在问题,问题在于,每当我通过注册创建用户并尝试以测试用户身份登录时,它都不会登录,始终指向我已经设置了Httpresponse。在检查完管理面板之后,正在创建用户,现在我不知道要去哪里,我的确认为我没有获取正确的数据或没有获取数据
## Register
def register(request):
if request.method == 'GET':
return render(request, 'auth/register.html', { })
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
passwordConf = form.cleaned_data['passwordConf']
email = form.cleaned_data['email']
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
user = User.objects.create_user(username, password, email)
if password == passwordConf:
return HttpResponseRedirect("/auth/signin")
else:
return HttpResponse("Passwords do not match", status=400)
else:
return HttpResponse("Invalid registration request.(Bad Request)", status=400)
else:
form = RegistrationForm
return HttpResponse("Method not allowed on /auth/register.(Method Not Allowed)", status=405)
## Signin
def signin(request):
if request.method == 'GET':
return render(request, 'auth/signin.html', { })
if request.method == 'POST':
form = SigninForm(request.POST)
if form.is_valid():
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return HttpResponseRedirect('/')
else:
return HttpResponse('Invalid Credientials', status=401 )
else:
return HttpResponse("Form is not valid", status=401)
答案 0 :(得分:1)
您的create_user
发送的参数顺序与预期的顺序不同。根据{{3}},它的签名为create_user(username, email=None, password=None, **extra_fields)
。
当前,通过使用user = User.objects.create_user(username, password, email)
,您正在设置user.email=password
和user.password=email
。
您需要使用:
user = User.objects.create_user(username, email, password)
答案 1 :(得分:0)
可能是您的用户处于非活动状态,即is_active
是False
。您要么需要
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.AllowAllUsersModelBackend']
在您的设置中,或将is_active
设置为True
。
文档:Default backend首先检查is_active
,这就是原因。