Ich stecke jetzt schon eine Weile fest und kann nicht herausfinden, was los ist. Ich fange gerade an, Django zu lernen und ich habe mein Login eingerichtet und möchte jetzt eine Registrierungsseite implementieren.
Ich habe zunächst das Formular UserCreationForm verwendet und das hat gut funktioniert, aber ich möchte Felder für E-Mail, Vorname und Nachname hinzufügen. Ich dachte, ich könnte einfach UserCreationForm unterordnen und die Felder hinzufügen, aber das scheint nicht zu funktionieren. Ich habe auch versucht, die Speichermethode zu überschreiben, aber es funktioniert immer noch nicht.
Mein benutzerdefiniertes Formular sieht wie folgt aus:
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
Die Ansicht, um dies zu handhaben, ist die folgende:
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))
Das Formular wird problemlos mit den neuen Feldern und allem anderen geladen, aber wenn ich es abschicke, erhalte ich die Fehlermeldung:
AttributeError at /register/
'AnonymousUser' object has no attribute 'backend'
Oh, und auch ich bin mit Django 1.3.
Irgendeine Idee, was ich falsch mache?