如何将Django QueryDict更改为Python Dict?

2024-09-29 10:26:28 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下问题:

<QueryDict: {u'num': [0], u'var1': [u'value1', u'value2'], u'var2': [u'8']}>

我想从这本书中找出一本词典(如:

{'num': [0], 'var1':['value1', 'value2'], 'var2':['8']}

(我不在乎unicode符号u是保持还是消失。)

如果我按照django site的建议,queryDict.dict(),我将丢失属于var1的额外值,例如:

{'num': [0], 'var1':['value2'], 'var2':['8']}

我在想这样做:

myDict = {}
for key in queryDict.iterkeys():
    myDict[key] = queryDict.getlist(key)

有更好的办法吗?


Tags: djangokeyunicode符号sitenummydict词典
3条回答

这应该有效:myDict = dict(queryDict.iterlists())

这就是我最终使用的:

def qdict_to_dict(qdict):
    """Convert a Django QueryDict to a Python dict.

    Single-value fields are put in directly, and for multi-value fields, a list
    of all values is stored at the field's key.

    """
    return {k: v[0] if len(v) == 1 else v for k, v in qdict.lists()}

从我的用法来看,这似乎给你一个列表,你可以发送回,例如,一个表单构造器。

编辑:也许这不是最好的方法。如果你想写QueryDict到一个文件,不管是什么疯狂的原因,QueryDict.urlencode()是一条路。要重建QueryDict,只需QueryDict(urlencoded_data)

相关问题 更多 >