django – getlist()

I just posted this question jQuery – passing arrays in post request, where I don’t to send arrays in post request, but there is no problem in jQuery code.

The problem is with receiving the POST request in django. I did like this.

def portfolio_add(request):
    ukeys = request.POST.getlist('ukeys')
    ........etc.......

But I’m getting ukeys values as u'[]'. When I checked with just request.POST I got the values as u"<QueryDict: {u'ukeys[]': [u'68c04', u'16149']}>"

So, How to get those values as a list in Django?

Thanks!

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

jQuery POST’s arrays with the [] suffix because PHP and some web frameworks understand that convention, and re-build the array on the server-side for you automatically. Django doesn’t work that way, but you should be able to access the data via:

ukeys = request.POST.getlist('ukeys[]')

Method 2

I encountered this same issue — Jakub is right, the [] is useful for other web frameworks, but the behavior of jQuery can be changed (I didn’t like the varname[] format).

The $.param function is specifically what does this and it also accepts a parameter to override this behavior.

Change Globally:

// put this early in your JS, preferably the first one imported after jQuery
//     or before the document.ready function if using inline js
jQuery.ajaxSettings.traditional = true;

Change on a per-call basis:

 $.param(data, true);  // true sets traditional mode
// for example:
 $.post('/some/url/', $.param(data, true)).done(callback)

Or of course you can use the [] on the server as Jakub mentions.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x