web-dev-qa-db-ja.com

Django Ajax経由で投稿された配列を取得する方法

Ajax(jQuery)経由でDjangoに配列を送信しようとすると

JavaScriptコード:

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

そして私は配列を読み取ろうとします:

Python:

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

最後の配列値のみを取得します。

'e'

何が悪いのですか?

33
Erez

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

72

かなり古い質問ですが、これについては完全に機能するコードを紹介します。 (初心者におすすめ:)

テンプレート内

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
        }
    })

rls.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,
        })
2

request.GET.getlist('data[]')を使用するだけです

0
user10960338