Я пытаюсь реализовать функцию ajax, которая будет выполнять запрос базы данных на основе значения id выпадающего списка.Не удалось выполнить проверку CSRF, несмотря на следующую документацию
HTML, из выпадающего списка
<form method = "POST" action="" >{% csrf_token %}
<select name = "parentorgs" id = "parentorgs">
{% for org in parentorg_list %}
<option value = "{{org.parentorg}}" id = "{{org.parentorg}}" >{{ org.parentorgname }}</option>
{% endfor %}
</select>
</form>
JQuery change()
функция используется для получения идентификатора выбора и передает его
function getData(id) {
$.ajax({
type : "POST",
url : "getData/",
data : {"parentorg" : id},
datatype: "json",
success : function(data) {
console.log(data)
}
});
}
, который в свою очередь вызывает функцию просмотра
from django.shortcuts import render_to_response, render
from django.core.context_processors import csrf
def getData(request):
c = {}
c.update(csrf(request))
return render_to_response("app/index.html", c)
Firebug показывает, что запрос проходит через POST , и URL метода действителен. Кроме того, URL-адрес этого метода был добавлен в urls.py.
На данный момент это не делает ничего, поскольку я просто хочу увидеть ответ от метода. Этот метод предназначен для выполнения модельного запроса и возврата результатов.
Каждый раз, когда в выпадающем списке выбирается элемент, я получаю сообщение об ошибке 403, описывающее, что в представлении используется ResponseContext, а не контекст для шаблона.
Что необходимо сделать для решения этой проблемы?
что произойдет, если вы поместите в код 'печати request.POST'? –
@VictorCastilloTorres, я получаю '[19/Jun/2013 21:28:11]" POST/app/getData/HTTP/1.1 "403 2294', когда это должно быть' parentorg: 28' – Jason
У вас есть код js, который устанавливает заголовок в ваших запросах Ajax? https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax –