57

When I try to send an array to Django via Ajax (jQuery)

JavaScript code:

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

and I try to read the array:

Python:

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

I get only the last array value:

'e'

What am I doing wrong?

0

4 Answers 4

108

You're looking for the QueryDict's getlist

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

Sign up to request clarification or add additional context in comments.

6 Comments

Had a similar problem but using the POST method, where the final line that worked for me was request.POST.getlist('data[]')
'selected = request.GET.getlist['selected[]'] TypeError: 'instancemethod' object has no attribute '__getitem__' I get this error... But i have an array of stings like ["one","two","three"]
@nidHi you need request.GET.getlist('selected[]') instead of request.GET.getlist['selected[]']
request.GET.getlist('data[]') worked for me in Django 2.0
I owe you one mate, i was looking for this and it was driving me crazy
|
7

Quite old question but let me show you full working code for this. (Good for newbie :)

In your template

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

Comments

2

Just use request.GET.getlist('data[]')

Comments

1

With newer versions of django I was finding that even @YellowCap suggestion of request.POST.getlist('data[]') wasn't working for me.

However dict(request.POST)["data"] does work. Context here: https://code.djangoproject.com/ticket/1130

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.