所以我是django的新手,对python的了解不足以称自己为初学者,但我绝不是专业人士。我只是想让一个小的django应用程序使用用户身份验证。我使用的是默认的身份验证系统https://docs.djangoproject.com/en/1.8/topics/auth/default/,内置的表单、登录、注销等都有自己的视图,但是UserCreationForm没有自己的视图,所以我想我必须创建自己的视图。不知道我做错了什么。在
这是我的视图.py在
1 from django.shortcuts import render
2 from django.http import HttpResponse
3 from django.contrib.auth.forms import UserCreationForm
4 from django.contrib.auth import login
5
6 def home(request):
7 return HttpResponse("This is a barebones homepage")
8
9 def register(request):
10 registered = False
11
12 if request.method == 'POST':
13 user_form = UserCreationForm(data=request.POST)
14
15 if user_form.is_valid():
16 user = user_form.save()
17 username = user_form.get_username()
18 password = user_form.clean_password2()
19 login(request,user)
20 else:
21 print user_form.errors
22 else:
23 user_form = UserCreationForm()
24
25 return render(request, 'registration/register.html', {'user_form': user_form, 'registered': registered} )
~
这是我的注册.html在
^{pr2}$
更改用户_form.get_用户名()至请求.用户.用户名在
首先,行
username = user_form.get_username()
给出了一个错误,因为正如消息所说,表单没有get_username
方法。您可以使用user访问用户名_已清理的数据['用户名']其次,行
password = user_form.clean
将给出一个错误,因为表单没有属性clean
。如果需要,可以使用user_form.cleaned_data['password1']
从password1
字段中获取值。在在
login
用户之前,必须对其进行身份验证,否则将得到一个关于用户没有属性backend
的错误。在综合起来,你有:
您必须通过将导入更改为来导入
^{pr2}$authenticate
方法:请注意,您没有在代码中的任何地方设置
registered=True
。通常,在表单成功提交后重定向是一个很好的做法,以防止重复提交。在相关问题 更多 >
编程相关推荐