2011-01-16 13 views

Antwort

86

Using a form in a view so ziemlich erklärt es.

Das Standardmuster ein Formular in einer Ansicht für die Verarbeitung wie folgt aussieht:

def contact(request): 
    if request.method == 'POST': # If the form has been submitted... 
     form = ContactForm(request.POST) # A form bound to the POST data 
     if form.is_valid(): # All validation rules pass 
      # Process the data in form.cleaned_data 
      # ... 

      print form.cleaned_data['my_form_field_name'] 

      return HttpResponseRedirect('/thanks/') # Redirect after POST 
    else: 
     form = ContactForm() # An unbound form 

    return render_to_response('contact.html', { 
     'form': form, 
    }) 
+0

Beispiel dieser gebundenen Form: 'Klasse Contact (forms.Form): my_form_field_name = forms.CharField()' –

21

Sie diese Daten bestätigen, nachdem Sie tun können.

if myform.is_valid(): 
    data = myform.cleaned_data 
    field = data['field'] 

Lesen Sie auch die Django-Dokumentation. Sie sind perfekt.

+10

was b4 Sie Ihre Daten reinigen? – Sevenearths

+2

Bevor Sie Ihre Daten alle löschen, gibt es nur request.POST, das mit der Formularinstanz gespeichert wird. Durch die Bereinigung werden die POST-Daten den Formularfeldern zugeordnet. Vor der Reinigung müssten Sie mit der Anfrage arbeiten.POST. – freb

+0

Ist es möglich, den Wert von formField zu erhalten, wenn es initial ist? – Fydo

3

Ich benutze Django 1.7+ und Python 2.7+, die obige Lösung funktioniert nicht. Und der Eingangswert in der Form kann die Verwendung POST wie unten (verwenden Sie das gleiche Formular oben) bekommen werden:

if form.is_valid(): 
    data = request.POST.get('my_form_field_name') 
    print data 

Hoffnung, das hilft.

21

Treffen Sie Ihre Wahl:

def my_view(request): 

    if request.method == 'POST': 
     print request.POST.get('my_field') 

     form = MyForm(request.POST) 

     print form['my_field'].value() 
     print form.data['my_field'] 

     if form.is_valid(): 

      print form.cleaned_data['my_field'] 
      print form.instance.my_field 

      form.save() 
      print form.instance.id # now this one can access id/pk 

Hinweis: das Feld so schnell zugegriffen wird, sobald sie verfügbar ist.

+1

Diese Antwort fasst alle Optionen am besten zusammen - Zugriff auf rohe POST-Daten, nicht validierte Formularfelder und schließlich validierte Formularfelder. – DataMania

Verwandte Themen