2011-05-08 16 views

Respuesta

20

No es necesario utilizar el atributo .cleaned_data de una forma antes de pasar los valores de entrada, se generará un AttributeError si lo hace antes de llamar .is_valid() en forma ligada o si intenta acceder a él de forma independiente, read more about Form.cleaned_data.

Además, por lo general es una buena idea abstracta el uso de los datos del formulario en un método de formulario con el fin de encapsular la lógica

En su opinión, la forma tradicional que usted debe utilizar formas es así:

if request.method == 'POST': 
    form = MyForm(request.POST) # Pass the resuest's POST/GET data 
    if form.is_valid():   # invoke .is_valid 
    form.process() # look how I don't access .cleaned_data in the view 

en su forma:

class MyForm(forms.Form): 
    my_field = forms.CharField() 

    def process(self): 
    # Assumes .cleaned_data exists because this method is always invoked after .is_valid(), otherwise will raise AttributeError 
    cd = self.cleaned_data 
    # do something interesting with your data in cd 
    # At this point, .cleaned_data has been used _after_ passing the POST/GET as form's data 
+0

+1 por mencionar Django lanzará una AttributeError si se intenta acceder a la '' cleaned_data' antes de llamar is_valid() 'dato curioso: todavía hace esto y 6 orejas más tarde ... – pentix

+0

@pentix Yip. ¿Crees que quizás hayan usado un error FormNotValidated? – Derek

1

Una vez que is_valid() devuelve Verdadero, puede procesar el envío de formulario seguro sabiendo que cumple con las reglas de validación definidas por su formulario. Si bien puedes acceder a request.POST directamente en este punto, es mejor acceder a form.cleaned_data. Esta información no solo ha sido validada sino que también se convertirá en los tipos de Python correspondientes para usted.

Processing the data from a form

Cuestiones relacionadas