Я продолжаю получать 403 ошибки из Django.Django/JQuery CSRF: 403 Ошибка
Я установил свои settings.py для использования защиты CSRF и использовал токен csrf_token в своем шаблоне.
Вот файл JS я включил только после HTML заголовка: http://bpaste.net/show/87791/
Использование Firebug я могу проверить, что печенье CSRF есть. Позже на странице, пользователь нажимает на кнопку, которая запускает этот код:
myFunction: function() {
$.ajax({
type: 'POST',
url: window.localtion.href + 'myajaxview',
async: false
});
}
Я использую на основе простой вид класса, унаследованный от TemplateView, чтобы отобразить страницу. «myajaxview» наследуется от View и JSON Mixin. Однако его код никогда не выполняется, поскольку django не может проверить токен CSRF.
Мне кажется, что ajax не отправляет токен с заголовками POST, как должен. Или я чего-то не хватает?
EDIT: Я переехал вызов $ .ajaxSetup непосредственно перед вызовом функции $ .ajax() POST, и это сработало. Я попытался переместить его в другое место, и это не удалось. Я думаю, проблема связана скорее с Ajax, чем с Django. Итак, мой вопрос по-прежнему существует, я не хочу ставить вызов $ .ajaxSetup перед каждым вызовом $ .ajax, я не думаю, что так оно и делается, я не хочу повторять сам. Так что это было всего лишь обходным путем, и я прошу разрешения.
Вы можете взглянуть на csrf_exempt [здесь] (https://docs.djangoproject.com/en/1.2/ref/contrib/csrf/) –
Уже видел, что если вы посмотрите на мой код на bpaste, это почти то же самое. Разница в том, что я включаю это как внешний .js-файл. Поскольку я хочу поделиться этой функцией и не включать один и тот же код каждый раз, когда я делаю запрос ajax в каждом шаблоне. Может, в этом и проблема? Где поставить csrf_token при использовании ajax? И где поставить код getCookie (т. Е. Только если я сделал это неправильно)? – Aki