Я застрял на этом некоторое время и не могу понять, что происходит. Я только начинаю изучать 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.
Есть идеи, что я делаю не так?