Django User Register,自动登录和重定向



我在注册时收集了两个表单——一个注册表单和一个用户配置文件表单。表单提交工作正常-我可以在管理面板上看到新用户和他们的个人资料。问题是自动将它们登录并重定向到特定页面似乎不起作用。

这就是我的views.py文件的样子:

def registerView(request):
regForm = RegisterForm
proForm = UserProfileForm

if request.method == 'POST':
regForm = RegisterForm(request.POST)
proForm = UserProfileForm(request.POST)


if regForm.is_valid() and proForm.is_valid():
user = regForm.save(commit=True)

profile = proForm.save(commit=False)
profile.user = user
profile.save()


username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user:
if user.is_active:
login(request, user)
return render (request, 'main/dashboard.html', {})
else:
return HttpResponse("There was a problem signing you up!")



regDic = {'regForm': regForm, 'proForm': proForm}
return render(request, 'person/register.html', context=regDic)

自动登录的最佳方式是什么;在提交表单时重定向注册用户?

尝试使用重定向而不是渲染。

from django.shortcuts import redirect
if user:
if user.is_active:
login(request, user)
return redirect('name of the url you want to redirect')

成功登录后,首先使用有效表单中的cleaned_data而不是原始值,然后使用模板redirect而不是render到某个路径。

并且authenticate函数应该将request作为第一个参数。

username = regForm.cleaned_data.get('username')
password = regForm.cleaned_data.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:            
login(request, user)
return redirect('some_path')

最新更新