django - 如何从Django的请求中获取多值键的所有值。

标签 django

Django文档在http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.QueryDict.iteritems上说QueryDict.iteritems()使用与QueryDict.__getitem__()相同的最后值逻辑,这意味着如果键具有多个值,则__getitem__()返回最后一个值。

假设print request.GET看起来像这样:
<QueryDict: {u'sex': [u'1'], u'status': [u'1', u'2', u'3', u'4']}>
如果我想获取类似于sex=1&status=1&status=2&status=3&status=4(标准HTTP GET内容)的字符串,则由于上述iteritems行为,以下代码将无法获得预期的结果:

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

在没有太多循环的情况下获得我想要的结果的最有效方法是什么?

问候。

[编辑]

我应该提一下,我没有求助于QueryDict.urlencode(),因为该request.GET中有一些我不需要的键。我可以更改字符串并取出那些key = value,但是只是想知道是否有更好的方法可以解决此问题。我意识到应该明确提及这些信息。

最佳答案

这应该工作:

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)

关于django - 如何从Django的请求中获取多值键的所有值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3324009/

相关文章:

python - 使用基于函数的 View 过滤 Geodjango 结果

python - Django 中的模板目录逻辑

python - Django 在多对多中按计数排序(@property)?

python - Django - 注销 View 自定义失败

python - 在 Django View 中访问表单字段作为属性

python - get_current_language_bidi 未按预期工作

django - Viewsets `create()`和 `update()`与序列化器 `create()`和 `update()`有什么区别?

python - 在 Django 测试中,我应该如何保存数据库对象然后从数据库中检索它?

面向零售商/分销商的 Python 网上商店

python - 内存泄漏 - gunicorn + django + mysqldb