我想在我的 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
是一个字典子类,可以处理分配给一个键的多个值。所以你应该将 dict
的 values
作为 列表
。这里,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
可以转换成QueryDict
as
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/