20

我正在尝试向 Django 发布一个简单数字的 jQuery 数组,但我真的无法让它工作。我需要一点帮助。我收到带有以下错误的 Http 500:

Internal Server Error: /edit_lists/
Traceback (most recent call last):
  File "/home/jabez/.virtualenvs/hackernews/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in get_response
    response = middleware_method(request, response)
  File "/home/jabez/.virtualenvs/hackernews/local/lib/python2.7/site-packages/django/middleware/common.py", line 106, in process_response
    if response.status_code == 404:
AttributeError: 'list' object has no attribute 'status_code'

这是我的代码:

JavaScript

    $('.btn-group').find('#mark_as_done').on('click', function() {
    var tasks = grab_selected();

    $.ajax({
        type: 'POST',
        url: '/edit_lists/',
        data: {'tasks': tasks},
    });
});

function grab_selected() {
    var tasks = [];
    $('input:checked').each(function() {
        tasks.push(this.id);
    });
    return tasks;
}

视图.py

def edit_lists(request):
tasks = request.POST.getlist('tasks')
return tasks

网址.py

url(r'^edit_lists/$', 'todo.views.edit_lists', name='edit_lists')
4

2 回答 2

46

通过 ajax 发送时,您可以尝试使用tasks[]而不是作为参数。tasks例子:

$('.btn-group').find('#mark_as_done').on('click', function() {
    var tasks = grab_selected();

    $.ajax({
        type: 'POST',
        url: '/edit_lists/',
        data: {'tasks[]': tasks},
    });
});

另一件事是您只是return tasksedit_lists()视图中返回,您已经返回一个HttpResponse实例或使用如下快捷方式render

from django.http import HttpResponse

def edit_lists(request):
    tasks = request.POST.getlist('tasks[]')
    return HttpResponse('Success')

希望能帮助到你,

于 2013-08-04T18:39:27.713 回答
10

JSON.stringify()通过 Ajax 发送时,您可以尝试使用方法而不是任务作为参数。

这是我控制台上的数组数据

在此处输入图像描述

然后通过ajax发送Array数据

$.ajax({
     type: "POST",
     url: "/user/Survey-Design/",
     headers: {
         'Authorization': "Token " + localStorage.access_token
     },
     data: {
         'arr': JSON.stringify(arr)
     },
     success: function(result) {
         alert('Data Has been saved')
     }
 });

在views.py中:

 def create(self,request):
     array_data = request.POST['arr']
     data = json.loads(array_data)
     print(data)
     return HttpResponse('Success')

最后,在终端上显示 print(data)

在此处输入图像描述

于 2018-02-09T19:36:14.527 回答