繁体   English   中英

如何在Django中通过Ajax发布数据?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM