Página 1 de 1

DJango management_form y csrf

Publicado: Mar, 01 Feb 2011, 09:42
por Metal
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.

Re: DJango management_form y csrf

Publicado: Mié, 02 Feb 2011, 10:33
por williansvi
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.

Re: DJango management_form y csrf

Publicado: Jue, 03 Feb 2011, 08:52
por Metal
Voy a revisar el tema y de funcionar comparto la solución.

Re: DJango management_form y csrf

Publicado: Lun, 14 Feb 2011, 13:14
por Metal
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>

Re: DJango management_form y csrf

Publicado: Jue, 05 May 2011, 14:55
por linvix
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