python - QueryDict 和 MultiValueDict 有什么区别?

标签 python django dictionary

我想在我的 Django 项目中将字典转换为 QueryDict。存在几个链接来解释这一点( Django: Can I create a QueryDict from a dictionary?How to change a django QueryDict to Python Dict? )。这是我要转换的简单字典 abc = {'a': 1, 'b':[1,2,3]}。我试过这种方法:

from django.http import QueryDict
from django.utils.datastructures import MultiValueDict
abc = { 'a': 1, 'b':[1,2,3]}
mdict = MultiValueDict(abc)
qdict = QueryDict(mdict)

这是我得到的错误跟踪

/usr/lib/python2.7/urlparse.pyc in parse_qsl(qs, keep_blank_values, strict_parsing)
407     Returns a list, as G-d intended.
408     """
409     pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]
410     r = []
411     for name_value in pairs:
AttributeError: 'MultiValueDict' object has no attribute 'split'

为什么失败了,我该如何完成? 另外,MultiValueDict 和 QueryDict 有什么区别?

最佳答案

MultiValueDict 是一个字典子类,可以处理分配给一个键的多个值。所以你应该将 dictvalues 作为 列表。这里,1->[1]

In an HttpRequest object, the GET and POST attributes are instances of django.http.QueryDict, a dictionary-like class customized to deal with multiple values for the same key. This is necessary because some HTML form elements, notably , pass multiple values for the same key.

The QueryDicts at request.POST and request.GET will be immutable when accessed in a normal request/response cycle. To get a mutable version you need to use .copy().

然后MultiValueDict可以转换成QueryDictas

abc = { 'a': [1], 'b':[1,2,3]}
mdict = MultiValueDict(abc)
qdict = QueryDict('', mutable=True)
qdict.update(mdict)
>>>QueryDict: {u'a': [1], u'b': [1, 2, 3]}>
>>>dict(qdict.iterlists())
{u'a': [1], u'b': [1, 2, 3]}
>>>qdict.getlist('b')
[1, 2, 3]

关于python - QueryDict 和 MultiValueDict 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31911923/

相关文章:

python - 如何使用 ForeignKey ('self' ) 获取字段而不可能链接到同一条目?

java - Map - 固定迭代顺序

java - 在 Kotlin 中访问映射内的值

python - 为什么用 zip 启动的带有元组键的字典会在更新单个键时更新所有键?

python - 在 QT 样式表中使用相对 url

python - 完美数列表器

python - plt.plot 使用元组参数绘制什么?

python - 下载 PDF 到子目录

python - 模型似乎没有继承

django - 从 django 查询集中的单个字段派生多个值