[英]How do i post data via ajax in django?
我有一个动态更新的表单,提交后,我试图将数据发布到视图函数中并获取响应。 这是我的模板文件:
$("#myForm").submit(function(){
event.preventDefault();
var msg = '';
for(var i=1; i<counter; i++){
msg += "\n Textbox #" + i + " : " + $('#textbox' + i).val();
}
$.post("/results/", {'data', msg},function(res) {
console.log("Got a result", res);
});
});
表单部分:
<form name="myForm" id="myForm" method="POST" action="">{% csrf_token %}
<div class="modal-body">
<div id='TextBoxesGroup'>
<div id="TextBoxDiv1">
<label>Textbox #1 : </label><input type='text' id='textbox1' class="form-control" placeholder="Body Text">
</div>
</div><br/>
<input type='button' value='Add Button' id='addButton' class="btn btn-primary">
<input type='button' value='Remove Button' id='removeButton' class="btn btn-primary">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<input type="submit" class="btn btn-primary" id='getButtonValue' value="Save Changes">
</div>
</form>
urls.py文件:
(r'^results/$', views.results),
这是视图函数:
def results(request):
if request.is_ajax() and request.method == POST:
name = request.POST['name']
#add the post data to database.
return HttpResponse("Thanks! Successfully updated!")
else:
sys.exit(1) # print some error message
我收到403禁止的错误。 我以前使用过ajax,但从未遇到此错误。
该文档说明了如何在Ajax中使用跨站点请求伪造保护。
默认情况下,Django通过使用称为CSRF令牌的东西来验证POST请求,以防止跨站点脚本攻击。
为了使脚本正常工作,您需要通过从用户Cookie检索CSRF令牌或在表单视图中使用以下代码来将CSRF令牌作为参数传递
<form action="." method="post">{% csrf_token %}
您可以在https://docs.djangoproject.com/en/1.6/ref/contrib/csrf/#how-to-use-it中找到更多说明和详细信息。
或者,您可以在def results(request):
上方的行上放置@csrf_exempt装饰器,以禁用该特定视图的csrf。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.