为什么这个变量没有在POST请求中传递?

时间:2015-01-17 21:52:38

标签: jquery ajax django

我试图通过AJAX做一个简单的POST请求,但我一直遇到500个错误。为了找出问题所在,我在每个if条件之后都添加了print语句。请参阅下面的视图。

if request.is_ajax():
    print "request is ajax"
    object_name = request.POST.get('entryname')
    print object_name
    targetobject = Entry.objects.get(headline=object_name)
    if request.user.username == targetobject.author:
        print "current user is author" 
        targetobject.delete()
    return HttpResponseRedirect('/storefront/')

打印到控制台的唯一内容(500错误除外)是“request is ajax”和“None”。这告诉我'object_name'或'entryname'出了问题。下面是jQuery AJAX。

<script type="text/javascript">
    var my_app = {
      username: "{{ request.user.username }}"  
    };
</script>
<script>
 $(document).ready(function() {
    $(".delete_button").click(function() {
        var entryname = $(this).attr('id');
        $.ajax({
            type: "POST",
            url: "/accounts/" + my_app.username + "/listview/",
            data: {'entryname': entryname},
            csrfmiddlewaretoken: '{{ csrf_token }}'
        });
        return false;
    });
});
</script>

<a href="" class="delete_button" id="{{ i.headline }}">del</a>

并且,控制台中出现此错误

DoesNotExist: Entry matching query does not exist.

我哪里出错了?是jQuery或我的视图方法中的错误吗?

1 个答案:

答案 0 :(得分:1)

您的代码看起来正在寻找具有类id的元素的delete_button。您的模板是否包含该类的元素?如果是这样,它的id是什么?这是应该作为entryname传递的值,但是如果模板中没有这样的元素,那么传递None的值是有意义的(正如您在评论中提到的那样)。尝试将delete_button类添加到您的链接标记。