将jQuery数组POST到Django

我正在尝试将一个简单数字的jQuery数组发布到Django,我真的无法使它工作。 我需要一点帮助。 我收到一个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; } 

views.py

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

urls.py

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

通过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}, }); }); 

另一件事是你只是在edit_lists()视图中返回return tasks ,你已经返回一个HttpResponse实例或使用像render这样的快捷方式:

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

希望能帮助到你,

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

这是我的consol上的数组数据

在此处输入图像描述

然后通过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') 

最后,在终端上显示打印(数据)

在此处输入图像描述