简体   繁体   中英

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!

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[]')

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM