如何在我的 django 视图函数中从 Ajax POST 获取数据?

2024-04-26

$(document).ready(function(){  
  $('.addFolder input').keydown(function(e) {
    if (e.keyCode == 13) {
        name = $(this).val();
        $.ajax({
          type: "POST",
          url: "/folder/",
          data: name,
            success: function(result) {
              $('.folders ul li:first-child').after('<li class="bg-color-2 ui-droppable" data-folderid="2">'+name+' <span>0</span></li>');
              $('.addFolder input').val('');
            }
        });
    }
  });

如何在我的 django 视图函数中从这个 Ajax 帖子获取数据?

模板:

  <div class="addFolder">
    <span>+</span>
    <input type="text" placeholder="Folder's name">

  </div>

views:

def folder(request):
    user = request.user
    if request.method == "POST" and request.is_ajax():
        name = request.POST['name']
        f = Folder.objects.create(name=name, user=user)
        status = "Good"
        return HttpResponse(status)
    else:
        status= "Bad" 
        return HttpResponse(status)

为什么我还有:

[2013 年 11 月 30 日 14:47:52] “POST /文件夹/ HTTP/1.1”403 2294

in logs?


您随时可以在您的request.POST多变的。
Docs: link https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.POST

您应该在 js 代码中修复的另一件事是data范围。
jQuery 文档声明如下:Object must be Key/Value pairs (link http://api.jquery.com/jQuery.ajax/)

关于更新的问题
您收到 403 是因为您没有发送csrf token.
如果你有'django.middleware.csrf.CsrfViewMiddleware'在你的 MIDDLEWARE_CLASSES 中启用,然后你需要把{% csrf_token %}到您的表单模板中,然后通过 js 将其与您的数据一起发送。
像这样:data: {'name': name, 'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在我的 django 视图函数中从 Ajax POST 获取数据? 的相关文章

随机推荐