【发布时间】:2011-12-16 04:22:10
【问题描述】:
我已经被这个问题困扰了一段时间,似乎无法弄清楚发生了什么。我刚开始学习 Django,我设置了登录,现在想实现一个注册页面。
我一开始使用的是 UserCreationForm 表单,效果很好,但我想为电子邮件、名字和姓氏添加字段。我想我可以只继承 UserCreationForm 并添加字段,但这似乎不起作用。我也尝试过覆盖保存方法,但它仍然不起作用。
我的自定义表单如下所示:
class RegistrationForm(UserCreationForm):
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
email = forms.EmailField(max_length=75)
class Meta:
model = User
fields = ("first_name", "last_name", "email",)
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.first_name = self.cleaned_data["first_name"]
user.last_name = self.cleaned_data["last_name"]
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user
处理这个问题的视图如下:
def Register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
new_user = form.save();
new_user = authenticate(username=request.POST['username'], password=request.POST['password1'])
login(request, new_user)
return HttpResponseRedirect('/members/home')
else:
form = RegistrationForm()
return render_to_response('register.html', {'form' : form}, context_instance=RequestContext(request))
表单可以很好地加载新字段和所有内容,但是当我提交时出现错误:
AttributeError at /register/
'AnonymousUser' object has no attribute 'backend'
哦,我也在使用 Django 1.3。
知道我做错了什么吗?
【问题讨论】:
-
我应该提到的另一件事是,似乎记录正在输入数据库中很好,除了用户名字段为空... first_name、last_name、email 和 password 都有值。
标签: django django-forms django-authentication