disable csrfmiddlewaretoken csrf_token django csrf jinja2

django - csrfmiddlewaretoken - ¿Cómo proteger csrf_token en el motor de plantillas jinja2?



get csrf token django (4)

Parece que Jinja2 funciona de manera diferente:

Use <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}"> donde en las plantillas de Django usa {% csrf_token %}

fuente: http://exyr.org/2010/Jinja-in-Django/

En la plantilla de Django utilicé:

<form action="/user" method="post">{% csrf_token %} {{ form.as_p|safe }} <input type="submit" value="Submit" /> </form>

Pero error cuando cambio al jinja2 template engine :

Encountered unknown tag ''csrf_token''

Mi pregunta: ¿Se csrf_token protection jinja2 en jinja2 ?

Si es necesario, ¿cómo hacer esto?

¡Gracias por adelantado!


Sé que esta es una pregunta antigua, pero quería actualizarla con la forma adecuada de admitir csrf_token cuando csrf_token el nuevo django.template.backends.jinja2.Jinja2 disponible en Django 1.8+. Usando el backend de la plantilla de django, habría llamado {% csrf_token %} , pero al usar el backend de Jinja2, lo llamará usando {{ csrf_input }} (puede obtener el valor del token en lugar de la entrada del token usando {{ csrf_token }} ) .

Puede ver los detalles en la source django.template.backends.jinja2.Jinja2


Tuve el mismo problema, y ​​lo que noté es que el procesador de contexto CSRF no está en la lista de los procesadores cargados por defecto. Después de agregar ''django.core.context_processors.csrf'' a TEMPLATE_CONTEXT_PROCESSORS en setting.py , podría usar la etiqueta de plantilla {% csrf_token %} normalmente.


Yo uso el Coffin . Y tiene el mismo problema cuando se usa:

from coffin.shortcuts import render_to_response return render_to_response(''template_name_here.html'', context)

intenta usar en su lugar:

from coffin.shortcuts import render return render(request, ''template_name_here.html'', context)