如何在django views函数中从Ajax POST获取数据? [英] How to get data from Ajax POST in my django views function?

查看:245
本文介绍了如何在django views函数中从Ajax POST获取数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

$(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帖子中获取数据?

How to get data from this Ajax post in my django views function?

模板:

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

  </div>

观看次数:

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)

为什么我仍然有:


[30 / Nov / 2013 14:47:52] POST / folder / HTTP / 1.1 403 2294

[30/Nov/2013 14:47:52] "POST /folder/ HTTP/1.1" 403 2294

在日志中?

推荐答案

在您的 request.POST 变量中进行访问。

文档:链接 < br>

You can always access it in your request.POST variable.
Docs: link

您应该在js代码中修复的另一件事是 data 参数。

jQuery文档声明以下内容:对象必须是键/值对链接

Another thing you should fix in js code is data parameter.
jQuery docs state the following: Object must be Key/Value pairs (link)

有关更新的问题

您收到403,因为您重新发送 csrf 令牌。

如果您有'django.middleware.csrf.CsrfViewMiddleware'在MIDDLEWARE_CLASSES中启用,则需要将 {%csrf_token%} 放入表单模板中,然后通过js与数据一起发送。

像这样: data:{'name':name,'csrfmiddlewaretoken':$('input [name = csrfmiddlewaretoken]')。val()}

on updated question
You receive 403 because you're not sending csrf token.
If you have 'django.middleware.csrf.CsrfViewMiddleware' enabled in your MIDDLEWARE_CLASSES, then you'd need to put {% csrf_token %} into your form's template, and then send it via js along with your data.
Like this: data: {'name': name, 'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()}

这篇关于如何在django views函数中从Ajax POST获取数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆