Das deutsche Python-Forum

10 Jahre Diskussionen rund um die Programmiersprache Python
Aktuelle Zeit: Samstag 25. Oktober 2014, 15:21

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: django form validierung
BeitragVerfasst: Donnerstag 8. März 2012, 01:43 
User

Registriert: Donnerstag 1. März 2012, 14:06
Beiträge: 3
Hallo! Ich sitze gerade an einem kleinen Formular und aus irgendwelchen Gründen funktioniert die Validierung nicht. Vielleicht sieht ja jemand den Fehler und kann mir helfen. Es wäre traumhaft! :)

Hier das Formular:
from django import forms

class contact(forms.Form):
   vorname = forms.CharField()
   nachname = forms.CharField()
   email = forms.EmailField()
   nachricht = forms.CharField(widget=forms.Textarea)
Highlighting by GeSHi


Hier die urls:
from django.conf.urls.defaults import patterns, include, url
from form.views import form_view, thanks_view

urlpatterns = patterns('',
   url('^form/$', form_view),
   url('^thanks/$', thanks_view),
)
Highlighting by GeSHi


Hier die Viewfunction:
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.core.mail import send_mail
from form.forms import contact

def form_view(request):
   if request.method == 'POST':
      a = contact(request.POST)
      if a.is_valid():
         b = a.cleaned_data
         send_mail(
            b['vorname'],
            b['nachname'],
            b['email'],
            b['nachricht'],
            b.get('email', 'xyz@abc.de'),
            ['xyz@abc.de'],
         )
      return HttpResponseRedirect('/thanks/')
   else:
      a = contact()
      return render_to_response('contact.html', {'a': a})

def thanks_view(request):
   return render_to_response('thanks.html')
Highlighting by GeSHi


Hier die contact.html:
<html>
    <head>
        <title>Contact us</title>
    </head>
    <body>
        <h1>Contact us</h1>
            {% if a.errors %}
                <p style="color: red;">
                    Please correct the error{{ a.errors|pluralize }} below.
                </p>
            {% endif %}
        <form action="." method="post">
            <table>
                {{ a.as_table }}
            </table>
            <input type="submit" value="Submit">
        </form>
    </body>
</html>
Highlighting by GeSHi


Und hier die /thanks/:
<html>
    <head>
        <title>Thank You!</title>
    </head>
    <body>
        <h1>Thank You!</h1>
    </body>
</html>
Highlighting by GeSHi



Ich verstehe nicht warum es nicht funktioniert! Man wird onsubmit immer direkt zur url /thanks/ weitergeleitet, ohne dass die Eingaben geprüft werden. Ich hab die Validierung in der shell probiert.. die funktioniert auf jeden fall. Was mache ich falsch ?! :|

Edit: Arbeite grad die dokumentation durch (http://www.djangobook.com/en/2.0/chapter07/)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: django form validierung
BeitragVerfasst: Donnerstag 8. März 2012, 09:33 
User
Benutzeravatar

Registriert: Donnerstag 25. Juni 2009, 15:40
Beiträge: 2623
Wohnort: Bonn
felix... hat geschrieben:
  1.                 [...]
  2.                 if a.is_valid():
  3.                         b = a.cleaned_data
  4.                         send_mail(
  5.                                 b['vorname'],
  6.                                 b['nachname'],
  7.                                 b['email'],
  8.                                 b['nachricht'],
  9.                                 b.get('email', <!-- e --><a href="mailto:'xyz@abc.de">'xyz@abc.de</a><!-- e -->'),
  10.                                 ['xyz@abc.de'],
  11.                         )
  12.                 return HttpResponseRedirect('/thanks/')
Highlighting by GeSHi

Ich verstehe nicht warum es nicht funktioniert! Man wird onsubmit immer direkt zur url /thanks/ weitergeleitet, ohne dass die Eingaben geprüft werden.

Du rufst if a.is_valid() auf und machst den Redirect dann unabhängig davon was das Ergebnis ist.

_________________
it's /me


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: django form validierung
BeitragVerfasst: Donnerstag 8. März 2012, 14:46 
User

Registriert: Donnerstag 1. März 2012, 14:06
Beiträge: 3
ok.. aber warum?

if a.is_valid()
...
return HttpResponseRedirect('/thanks/')
Highlighting by GeSHi


Das bezieht sich doch aufeinander oder nicht ?!

Was muss ich tun damit der redirect nicht mehr unabhängig vom Ergebnis ist?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: django form validierung
BeitragVerfasst: Donnerstag 8. März 2012, 14:51 
Es richtig einruecken?

  1. if False:
  2.     pass
  3. print "redirect"
  4.  
Highlighting by GeSHi


gibt doch auch redirect aus, egal, ob die Bedingung True oder False ist...


Nach oben
  
 
 Betreff des Beitrags: Re: django form validierung
BeitragVerfasst: Donnerstag 8. März 2012, 15:08 
User

Registriert: Donnerstag 1. März 2012, 14:06
Beiträge: 3
oh man. Ja es war nicht richtig eingerückt. Ich sitz hier stundenlang.. verrückt. :)

So funktioniert es auf jeden fall:

from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.core.mail import send_mail
from form.forms import contact

def form_view(request):
   if request.method == 'POST':
      a = contact(request.POST)
      if a.is_valid():
         b = a.cleaned_data
         send_mail(
            b['vorname'],
            b['nachname'],
            b['email'],
            b['nachricht'],
            b.get('email', 'xyz@abc.de'),
            ['xyz@abc.de'],
         )
         return HttpResponseRedirect('/thanks/')
   else:
      a = contact()
   return render_to_response('contact.html', {'a': a})

def thanks_view(request):
   return render_to_response('thanks.html')
Highlighting by GeSHi


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Deutsche Übersetzung durch phpBB.de