как получить все значения многозначного ключа от запроса Django. ПОЛУЧИТЕ QueryDict

В документах Django говорится по http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.QueryDict.iteritems этоQueryDict.iteritems() использует ту же логику последнего значения как QueryDict.__getitem__(), что означает это, если ключ имеет больше чем одно значение, __getitem__() возвращает последнее значение.

Скажем, print request.GET похож на это:

Если я хочу получить строку как sex=1&status=1&status=2&status=3&status=4 (стандартный HTTP ПОЛУЧАЕТ материал), следующий код не даст желаемые результаты из-за iteritems поведение упомянуло выше:

mstring = []
for gk, gv in request.GET.iteritems():
    mstring.append("%s=%s" % (gk, gv))
print "&".join(mstring)

Что самый эффективный путь состоит в том, чтобы получить результат, который я хочу без слишком большого цикличного выполнения?

С уважением.

[Править]

Я должен упомянуть, что не обращаюсь к QueryDict.urlencode() потому что существуют некоторые ключи в том запросе. ПОЛУЧИТЕ это, я не хочу в строке. Я мог изменить строку и вынуть те key=value, но просто задающийся вопросом, существует ли лучший способ пойти об этом. Я понимаю, что эта информация должна была быть явно упомянута.

17
задан chefsmart 24 July 2010 в 06:24
поделиться

4 ответа

Это должно работать:

mstring = []
for key in request.GET.iterkeys():  # "for key in request.GET" works too.
    # Add filtering logic here.
    valuelist = request.GET.getlist(key)
    mstring.extend(['%s=%s' % (key, val) for val in valuelist])
print '&'.join(mstring)
13
ответ дан 30 November 2019 в 10:39
поделиться
request.META['QUERY_STRING']

даст полную строку запроса

или если вы хотите получить список значений для заданного ключа ex: list of values for status then

request.GET.getlist('status')
23
ответ дан 30 November 2019 в 10:39
поделиться

Я считаю, что QueryDict.urlencode достигает желаемого результата, если все, что вы хотите сделать, это распечатать QueryDict, то просто

print request.GET.urlencode()

должно сработать. Дайте мне знать, если вы пытались сделать что-то другое, и я постараюсь помочь!

8
ответ дан 30 November 2019 в 10:39
поделиться
request.GET.getlist('status')
6
ответ дан 30 November 2019 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: