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

Why is this variable not being passed in the POST request?

我正在尝试通过 AJAX 执行一个简单的 POST 请求,但我一直收到 500 个错误。为了弄清楚问题出在哪里,我在每个 if 条件之后添加了打印语句。请看下面我的看法。

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' 有问题。下面是jQueryAJAX.

<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错误还是我的查看方法错误?

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