2012-07-23 19 views
21

Tengo un flujo en mi aplicación django en el que redirijo al usuario a otro servicio (por ejemplo, PayPal) que después de algunos su propio procesamiento, devuelve al usuario a mi propio servidor. El punto de retorno en mi servidor es una página de éxito HTML simple que hago usando direct_to_template.Cómo eximir la protección CSRF en direct_to_template

Por alguna extraña razón, el otro servidor envía una solicitud POST y, por lo tanto, el usuario ve un token CSRF que falta, ya que el otro servidor no envía ningún token CSRF.

¿Cómo eximo una vista direct_to_template de los tokens CSRF?

Respuesta

34

Puede usar el decorador csrf_exempt para deshabilitar la protección CSRF para una vista en particular.

Digamos que su patrón de URL es:

('^my_page/$', direct_to_template, {'template': 'my_page.html'}) 

Añada la siguiente importación a su urls.py:

from django.views.decorators.csrf import csrf_exempt 

a continuación, cambiar el patrón de URL a:

('^my_page/$', csrf_exempt(direct_to_template), {'template': 'my_page.html'}) 
31

Puede utilizar @csrf_exempt decorador para exceder el token csrf para esto tiene que importar

from django.views.decorators.csrf import csrf_exempt 

luego escribir @csrf_exempt antes de que su vista

esto funcionará correctamente :)

+3

esto no responde a la pregunta en absoluto, ya que quiere utilizar la función integrada direct_to_template, no decorar su propia views –

+0

También puede usar '@method_decorator (csrf_exempt)' en el método 'dispatch' para sus vistas basadas en clases. –

Cuestiones relacionadas