programing

Ajax를 통해 Django에서 어레이를 게시하는 방법

powerit 2023. 3. 14. 21:59
반응형

Ajax를 통해 Django에서 어레이를 게시하는 방법

Ajax(jQuery)를 통해 Django로 어레이를 전송하려고 할 때

JavaScript 코드:

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

어레이를 읽으려고 합니다.

Python:

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

마지막 어레이 값만 가져옵니다.

'e'

내가 뭘 잘못하고 있지?

고객님이 찾고 있는 것은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

꽤 오래된 질문이지만, 이것에 대한 완전한 작업 코드를 보여 드리겠습니다. (초보자용:)

템플릿 내

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

그냥 사용하다request.GET.getlist('data[]')

새로운 버전의 django를 사용하면 @YellowCap의 제안조차도request.POST.getlist('data[]')나한테는 안 통했어

하지만dict(request.POST)["data"]동작합니다.문맥 : https://code.djangoproject.com/ticket/1130

언급URL : https://stackoverflow.com/questions/12101658/how-to-get-an-array-in-django-posted-via-ajax

반응형