林'尝试在注册后自动登录用户,但任何事情似乎都有效。
不起作用:
if registroForm.is_valid():
registroForm.save()
user = authenticate(username=registroForm.cleaned_data['username'], password=registroForm.cleaned_data['password1'])
request.session['_auth_user_id'] = user.pk
request.session['_auth_user_backend'] = user.backend
return JsonResponse({})
不起作用:
if registroForm.is_valid():
registroForm.save()
usuario = authenticate(username=registroForm.cleaned_data['username'], password=registroForm.cleaned_data['password1'])
login(request, usuario)
return JsonResponse({})
我正在使用Django 2.0
答案 0 :(得分:1)
我按照Django docs:
的方式进行操作def post(self,request):
form = self.form(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password1']
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
user = User.objects.create_user(username, username, password)
login(request, user)
return HttpResponseRedirect(reverse(request.POST['next']))
context = {'form' : form,
'title': self.title,
'myurl' : self.myurl,
'submit': self.submit,
'nexturl' : self.nexturl,
}
return render(request, self.template_name, context)
对于我的应用程序,如果验证失败,我必须在上下文中添加一些其他内容。你应该能够在那里传递表格。
修改强>
您不想在此处使用authenticate
。由于这是注册,您需要创建新用户(create_user()
),然后使用该用户的信息调用login
(这是{{1}之后的代码块中间的行})。然后重定向到配置文件更新页面,您可以在其中提示用户输入要与用户一起存储的其他信息。