我正在尝试实现一个ajax函数,该函数将根据下拉选择的id值执行数据库查询。
下拉列表的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()
函数用于获取选择的ID并将其传递给
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而不是Context用于模板。
解决此问题需要做些什么?
答案 0 :(得分:1)
根据doc
如果您正在使用Django的render_to_response()快捷方式使用字典的内容填充模板,则默认情况下将为您的模板传递一个Context实例(而不是RequestContext)。要在模板渲染中使用RequestContext,请将可选的第三个参数传递给render_to_response():RequestContext实例。您的代码可能如下所示:
from django.template import RequestContext
def getData(request):
c = {}
c.update(csrf(request))
return render_to_response("app/index.html", c, context_instance=RequestContext(request))