[Django] Fehlerausgabe in einem Formular

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

ich habe auf einer Seite ein Kontaktformular. Verschiedene Felder müssen ausgefüllt werden. Einige haben required=False. Angelehnt ist das ganze an die Doku zu Django. Alle POST-Daten werden mit form.cleaned_data[] geprüft.
Wenn ich keine oder fehlerhafte Angaben in die benötigten Felder einsetze, bekomme ich aber eine Fehlermeldung:

Code: Alles auswählen

The view mysite.myapp.views.contact didn't return an HttpResponse object
Werden alle benötigten Felder richtig ausgefüllt, funktioniert die Seite.
Lasse ich mir den else-Zweig der Anweisung if form.is_valid(): ausgeben, erhalte ich auch ein Dictionary mit den Fehlern.

Erwartet habe ich, dass wieder das Kontaktformular angezeigt wird und die Fehler angezeigt werden. Das ganze hat auch schon vor einiger Zeit mal funktioniert :oops:

Hat jemand einen Tip für mich, warum nicht die Fehler in dem Kontaktformular ausgegeben werden sondern die Fehlermeldung kommt?

Grüße
Mawilo
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Codeschnipsel! Liegt bestimmt irgendwo am Code.
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Naja, sind mehr als ein paar Zeilen. Hier die View-Funktion:

Code: Alles auswählen

def contact(request):
    if request.method == 'POST': 
        form = ContactForm(request.POST)
        if form.is_valid():
            firma = form.cleaned_data['firma']
            vorname = form.cleaned_data['vorname']
            name = form.cleaned_data['name']
            plz = form.cleaned_data['plz']
            ort = form.cleaned_data['ort']
            strasse = form.cleaned_data['strasse']
            hnr = form.cleaned_data['hnr']
            telefon = form.cleaned_data['telefon']
            fax = form.cleaned_data['fax']
            mail = form.cleaned_data['mail']
            c_art = form.cleaned_data['c_art'] 
            number = form.cleaned_data['number']
            s_ort = form.cleaned_data['s_ort']
            s_plz = form.cleaned_data['s_plz']
            mietstart = form.cleaned_data['mietstart']
            mietende = form.cleaned_data['mietende']
            mitteilung = form.cleaned_data['mitteilung']
            
            return HttpResponseRedirect('/danke/')
##        else:
##            f = open('/tmp/aa_test.txt', 'w')
##            for e in form.errors:
##                f.write(str(e))
##                f.write(' - ')
##                f.write(str(form.errors[e]))
##                f.write('\n')
##            f.close()
    else:
        form = ContactForm()
        return render_to_response('contact.html', {'form': form,})
Wenn ich den else-Zweig aktiviere, bekomme ich folgendes:

Code: Alles auswählen

s_plz - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
name - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
ort - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
plz - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
telefon - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
vorname - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
mietende - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
mail - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
strasse - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
mietstart - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
s_ort - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
hnr - <ul class="errorlist"><li>Dieses Feld ist zwingend erforderlich.</li></ul>
Kann der Fehler auch im Template liegen?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Der letzte return in Zeile 34 ist falsch eingerückt ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Dafür liebe ich dieses Forum! :D

Genau das war es. Wenn man den eigenen Code zu lange anschaut, sieht man keine Fehler mehr. (wie früher in der Schule bei einem Diktat :wink: )

Danke
Antworten