2011-01-16 53 views

Respuesta

86

Using a form in a view casi lo explica.

El patrón estándar para el procesamiento de una forma en una vista se parece a esto:

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

Ejemplo de esa forma unida: 'ContactForm clase (forms.Form): my_form_field_name = forms.CharField()' –

21

Usted puede hacer esto después de validar los datos.

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

Además, lea los documentos de django. Son perfectos.

+10

¿qué pasa con b4 limpiar sus datos? – Sevenearths

+2

Antes de limpiar sus datos, solo hay request.POST que se almacena con la instancia del formulario. La limpieza es lo que asocia los datos POST con los campos del formulario. Antes de limpiar, deberías trabajar con request.POST. – freb

+0

¿Es posible obtener el valor de formField si se establece su inicial? – Fydo

3

Uso django 1.7+ y python 2.7+, la solución anterior no funciona. Y el valor de entrada en la forma se puede conseguir utiliza el poste de la siguiente manera (utilizar el mismo formulario de arriba):

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

Espero que esto ayude.

21

una serie de opciones:

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 

Nota: el campo se accede tan pronto como esté disponible.

+1

Esta respuesta resume mejor todas las opciones, accediendo a datos de POST en bruto, campos de formulario no validados y finalmente campos de formulario validados. – DataMania

Cuestiones relacionadas