Вчера у меня возникла та же проблема, и я подумал, что она поможет людям, если есть простой способ ее решения, поэтому я написал для этого плагин jQuery: jquery.djangocsrf . Вместо добавления токена CSRF в каждом запросе он перехватывает себя в событии AjaxSend jQuery и добавляет клиентский cookie в заголовок.
Вот как это использовать:
1- включите его:
<script src="path/to/jquery.js"></script>
<script src="path/to/jquery.cookie.js"></script>
<script src="path/to/jquery.djangocsrf.js"></script>
2 - включите его в своем коде:
$.djangocsrf( "enable" );
Django всегда добавляет токен в куки, если ваш шаблон использует {% csrf_token %}
. Чтобы он всегда добавлялся, даже если вы не используете специальный тег в своем шаблоне, используйте декоратор @ensure_csrf_cookie
:
from django.views.decorators.csrf import ensure_csrf_cookie
@ensure_csrf_cookie
def my_view(request):
return render(request, 'mytemplate.html')
Примечание: я использую Django 1.6.2.