DJango management_form y csrf

Lenguajes interpretados o de script, IDEs de desarrollo...

Moderadores: frank, dxfiles

Responder
Metal
Mensajes: 32
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Python
Contactar:

DJango management_form y csrf

Mensaje por Metal » Mar, 01 Feb 2011, 09:42

Estoy creando un formulario a partir de un modelo y según la documentación oficial se puede hacer de varias formas, la primera es esta q me funciona bien:

Código: Seleccionar todo

<form method="post" action="">
    {{ formset }}
</form>
La segunda es un poco mas elaborada y ya no me funciona:

Código: Seleccionar todo

<form method="post" action="">
    {{ formset.management_form }}
    {% for form in formset %}
        {{ form }}
    {% endfor %}
</form>
He detectado q no me muestra el formulario por management_form q no me funciona.

El otro problema es q cuando uso la primera variante para ir trabajando con los formularios y envío los datos me da un error 403 y me dice q "CSRF verification failed. Request aborted." cuando desactivo este middleware en el settings.py todo funciona bien pero esta funcionalidad esta implementada según he leído para aumentar la seguridad del sitio y no me parece lógico deshabilitar.

Cualquiera q ya halla resuelto este problema por favor q me ayude.
Axioma de Espinosa
Si funciona, no lo toque.

Avatar de Usuario
williansvi
Mensajes: 51
Registrado: Sab, 07 Ago 2010, 14:09

Re: DJango management_form y csrf

Mensaje por williansvi » Mié, 02 Feb 2011, 10:33

Instala el paquete python-django-doc y luego, en tu browser vas a:

file:///usr/share/doc/python-django-doc/html/ref/contrib/csrf.html

Ahi esta todo.

Realmente el hecho de deshabilitar el Cross Site Request Forgery (CSRF) es botar el sofa.
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'

Metal
Mensajes: 32
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Python
Contactar:

Re: DJango management_form y csrf

Mensaje por Metal » Jue, 03 Feb 2011, 08:52

Voy a revisar el tema y de funcionar comparto la solución.
Axioma de Espinosa
Si funciona, no lo toque.

Metal
Mensajes: 32
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Python
Contactar:

Re: DJango management_form y csrf

Mensaje por Metal » Lun, 14 Feb 2011, 13:14

Agregando el 'django.middleware.csrf.CsrfResponseMiddleware' resolví el problema del csrf. El otro problema lo resolví con este codigo:

Código: Seleccionar todo

<form action="" method="POST">
    {% for field in formset %}
        <div class="{{ field.label }}">
            {{ field.label_tag }}: {{ field }}
            {% for error in field.errors %}
            	<span class='error'>{{ error }}</span>
            {% endfor %}
        </div>
    {% endfor %}
</form>
Axioma de Espinosa
Si funciona, no lo toque.

Avatar de Usuario
linvix
Mensajes: 11
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Cuba
Contactar:

Re: DJango management_form y csrf

Mensaje por linvix » Jue, 05 May 2011, 14:55

Weno
aunque un poco tarde

voy a responder, debes agragar esto

django.middleware.csrf.CsrfViewMiddleware

a la seccion de los Middleware del settings.py de tu poryecto

despues en la declaracion de cada formulario debes anadir lo siguiente

{% csrf_token %}

o sea

<form action="" method="post">{% csrf_token %}

Salu2

Responder