Django KeyError bei /register/

Ich habe eine Anmeldung, die Benutzern das registrieren und ich habe Schwierigkeiten, es zu beheben.

Das problem ist, wenn ein Nutzer ein single-Feld statt das ganze Formular zum Beispiel eine E-Mail . Ich bekomme diese Fehlermeldung

KeyError at /register/

password
Request Method:     POST
Request URL:    http://127.0.0.1:8000/register/
File "C:\Python26\Lib\site-packages\django\forms\forms.py" in _get_errors
  115.             self.full_clean()
File "C:\Python26\Lib\site-packages\django\forms\forms.py" in full_clean
  271.         self._clean_form()
File "C:\Python26\Lib\site-packages\django\forms\forms.py" in _clean_form
  299.             self.cleaned_data = self.clean()
File "C:\o\17\mysite\pet\forms.py" in clean
  31.       if self.cleaned_data['password'] != self.cleaned_data['password1']:

Exception Type: KeyError at /register/
Exception Value: password

Habe ich versucht zu beheben, diese Lösung zu verwenden, wenn . Wenn Benutzer a übermittelt, Benutzername oder alle anderen erforderlichen Feld -, Prozess-form sonst wieder die ursprüngliche form.

aber ich bekomme immer noch den gleichen Fehler.

Dies ist mein bearbeitet views.py (auf der Seite unten ist meine ursprüngliche RegistrationForm)

def PetRegistration(request):   
    if request.user.is_authenticated():
        return HttpResponseRedirect(reverse('world:HappyLand'))

    if request.method =='POST':
        form = UserRegistration(request.POST)
    if form.is_valid():
        username = form.cleaned_data['username']
        if username:
            email=form.cleaned_data['email']
            if email:
                password=form.cleaned_data['password']
                if password:
                    user = User.objects.create_user(
            username=form.cleaned_data['username'], 
            email=form.cleaned_data['email'], 
            password=form.cleaned_data['password']
            )
                    user.is_active = True
                    user.first_name = form.cleaned_data['name']
                    user.save()

                    person = authenticate(
            username=form.cleaned_data['username'], 
            password=form.cleaned_data['password']
            )

                    Person.objects.create(user_id=user.id, 
                    name=form.cleaned_data['name'],birthday=form.cleaned_data['birthday'])

                    login(request, person)
                    return HttpResponseRedirect(reverse('world:HappyLand'))

return render(request, 'register.html', {'form': UserRegistration()})

Wie kann ich diesen Fehler beheben und wie könnte ich die Anzeige einer Fehlermeldung auf die anderen Felder, die der Benutzer nicht ausfüllen wie "Error Fehlen, Feld , Füllen Sie Bitte das Feld".

def PetRegistration(request):   
if request.user.is_authenticated():
    return HttpResponseRedirect(reverse('world:HappyLand'))

if request.method =='POST':
    form = UserRegistration(request.POST)
    if form.is_valid():
        user = User.objects.create_user(
            username=form.cleaned_data['username'], 
            email=form.cleaned_data['email'], 
            password=form.cleaned_data['password']
            )
        user.is_active = True
        user.first_name = form.cleaned_data['name']
        user.save()

        person = authenticate(
            username=form.cleaned_data['username'], 
            password=form.cleaned_data['password']
            )

        Person.objects.create(user_id=user.id, 
            name=form.cleaned_data['name'],birthday=form.cleaned_data['birthday'])

        login(request, person)
        return HttpResponseRedirect(reverse('world:HappyLand'))

return render(request, 'register.html', {'form': UserRegistration()})

Meine forms.py

class UserRegistration(forms.Form):
    username = forms.CharField()
    name = forms.CharField()
    email = forms.EmailField()
    birthday = forms.DateField(widget=extras.SelectDateWidget(years=range(1950, 2012)))

    password = forms.CharField(
        widget=forms.PasswordInput(render_value=False)
        )
    password1 = forms.CharField(
        label=(u'Verify Password'), 
        widget = forms.PasswordInput(render_value=False)
        )

    def clean_username(self):
        username = self.cleaned_data['username']
        try:
            User.objects.get(username=username)
        except User.DoesNotExist:
            return username
        raise forms.ValidationError(
            "That user is already taken , please select another ")

    def clean(self):
        if self.cleaned_data['password'] != self.cleaned_data['password1']:
            raise forms.ValidationError("The password does not match ")
        return self.cleaned_data

Meine models.py

class Person(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100, blank=True)
    birthday = models.DateField(blank=True,null=True)
    def __unicode__(self):
        return self.name
InformationsquelleAutor donkeyboy72 | 2013-04-06
Schreibe einen Kommentar