Extracting items out of a QueryDict

后端 未结 8 1185
清酒与你
清酒与你 2020-12-29 07:04

I have a querydict that looks like the following:


How would I extract

相关标签:
8条回答
  • 2020-12-29 07:23

    You can use values_list on query dict, i.e.: MyDict.values_list('id') - it will return list of lists with id inside. To return list of id use MyDict.values_list('id', flat=True)

    Useful links:

    https://docs.djangoproject.com/en/1.4/ref/models/querysets/#values-list

    https://docs.djangoproject.com/en/1.4/ref/models/querysets/#values

    0 讨论(0)
  • 2020-12-29 07:26

    It seems like your client is posting JSON rather than formencoded data. Instead of accessing request.POST, use request.body (request.raw_post_data in versions 1.3 or less) and use json.loads() to convert to a dict.

    0 讨论(0)
  • 2020-12-29 07:30

    this one works also for values that are lists:

    dict_ = {k: qdict.getlist(k) if len(qdict.getlist(k))>1 else v for k, v in qdict.items()}
    
    0 讨论(0)
  • 2020-12-29 07:36

    This works for multiple values:

    dict(MyDict.lists())
    

    Dict keys are query vars, and dict values are lists of query values.

    0 讨论(0)
  • 2020-12-29 07:37

    Encountered similar case recently where data from POST call was in QueryDict form, I was able to access value of particular key using

    qdict.get(keyname)
    

    Also I was able to iterate using QueryDict.items() to get tuple of key & value

    for q in qdict.items():
        print(q)
    

    Note that QueryDict is subclass of Dictionary so all standard methods of Dictionary can also be implemented on QueryDict.

    More information available on djangoproject documentation https://docs.djangoproject.com/en/3.0/ref/request-response/#django.http.QueryDict

    0 讨论(0)
  • 2020-12-29 07:38

    Maybe this doesn't fully apply to you. But when I searched for this, your question was the first Stackoverflow question.

    I just wanted to get basic POST data out in Django. So just using GET worked fine for me. As the others stated, it might be easier to better format whatever script is creating the query.

    Basically I have a AJAX doing a post towards Django, the POST looks a bit like this:

    params = name=somename&data=abcdefg
    http.send(params);
    

    then in my view.py, i did this :

    def somefuntion(request):
        if request.method == 'POST':
            log.info('POST applied')
            alldata=request.POST
            log.debug(alldata)
            data = alldata.get("data", "0")
            name = alldata.get("name", "0")
            log.info("POST name: " + name)
            log.info("POST data: " + data)
    

    The output of alldata was :

    <QueryDict: {u'data': [u'abcdefg'], u'name': [u'somename']}>
    

    and the get commands give :

    name: somename
    data: abcdefg
    
    0 讨论(0)
提交回复
热议问题