QueryDict中的空列表实际上不是空的

2024-04-25 12:04:46 发布

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

我的方法中有一个QueryDyct对象(request.data),我想对它做一些修改,所以我复制了它:data_dict = data.copy()。在其中创建空列表时,它会创建一个额外的内部列表:

data_dict['emails'] = []
data_dict['emails'].append('foo@mail.com')
data_dict['emails'].append('bar@mail.com')

它不创建空列表并向其中追加数据,而是创建列表列表,并将数据追加到内部列表:

在PyCharm手表上,它显示为:

enter image description here

为什么会这样? 对于进一步的处理,它被(django validator)视为一封地址为['foo@mail.com', 'bar@mail.com']的电子邮件,但我希望有两封带有附加地址的不同电子邮件

如何在QueryDict中构造正常的空列表


Tags: 数据对象方法com列表datafoo电子邮件
1条回答
网友
1楼 · 发布于 2024-04-25 12:04:46

一个^{}首先是一个MultiValueDict,您可以重复GET参数。即,默认情况下,它在列表中处理其值。好消息是,您可以直接使用其功能来处理列表:

from django.http.request import QueryDict

d = QueryDict(mutable=True)
d.setlist('emails', ['abc@abc.com', 'def@abc.com'])
d['emails']
# 'def@abc.com'
d.getlist('emails')
# ['abc@abc.com', 'def@abc.com']
d.appendlist('emails', 'foo@bar.baz')
d
# <QueryDict: {'emails': ['abc@abc.com', 'def@abc.com', 'foo@bar.baz']}>
d.urlencode()
# 'emails=abc%40abc.com&emails=def%40abc.com&emails=foo%40bar.baz'

相关问题 更多 >

    热门问题