【问题标题】:How to get an array in Django posted via Ajax如何获取通过 Ajax 发布的 Django 中的数组
【发布时间】:2012-08-19 13:27:44
【问题描述】:

当我尝试通过 Ajax (jQuery) 向 Django 发送数组时

JavaScript 代码:

new_data = ['a','b','c','d','e'];
$.get('/pythonPage/', {'data': new_data},function(data){});

我尝试读取数组:

Python:

request.GET.get("data[]")

我只得到最后一个数组值:

'e'

我做错了什么?

【问题讨论】:

    标签: ajax django jquery python-2.7


    【解决方案1】:

    您正在寻找QueryDictgetlist

    request.GET.getlist('data')
    request.GET.getlist('data[]')
    request.GET.getlist('etc')
    

    https://docs.djangoproject.com/en/2.0/ref/request-response/#django.http.QueryDict.getlist

    【讨论】:

    • 谢谢!这就是我要找的:)
    • 遇到了类似的问题,但使用了POST 方法,对我有用的最后一行是request.POST.getlist('data[]')
    • 'selected = request.GET.getlist['selected[]'] TypeError: 'instancemethod' object has no attribute '__getitem__' 我收到此错误...但我有一系列类似 ["one","two","three"] 的刺痛
    • @nidHi 你需要request.GET.getlist('selected[]') 而不是request.GET.getlist['selected[]']
    • request.GET.getlist('data[]') 在 Django 2.0 中为我工作
    【解决方案2】:

    相当老的问题,但让我向您展示完整的工作代码。 (适合新手:)

    在您的模板中

    data = {
        'pk' : [1,3,5,10]
    }
    
    $.post("{% url 'yourUrlName' %}", data, 
        function(response){
            if (response.status == 'ok') {
                // It's all good
                console.log(response)
            } else {
                // Do something with errors
            }
        })
    

    urls.py

    urlpatterns = [
        url(r'^yourUrlName/', views.yourUrlName, name='yourUrlName'), #Ajax
    ]
    

    views.py

    from django.views.decorators.http import require_POST
    from django.http import JsonResponse
    
    
    @require_POST
    def yourUrlName(request):
        array = request.POST.getlist('pk[]')
    
        return JsonResponse({
                'status':'ok',
                'array': array,
            })
    

    【讨论】:

      【解决方案3】:

      只需使用request.GET.getlist('data[]')

      【讨论】:

        猜你喜欢
        • 2013-09-09
        • 1970-01-01
        • 1970-01-01
        • 2021-10-18
        • 2011-02-10
        • 2014-09-04
        • 1970-01-01
        • 2018-06-04
        • 1970-01-01
        相关资源
        最近更新 更多