gpt4 book ai didi

python - QueryDict 和 MultiValueDict 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 22:29:53 27 4
gpt4 key购买 nike

我想在我的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com