QueryDict中的列表以字符串形式检索

时间:2018-07-13 08:30:27

标签: django

我将代码重构为最小:

<form action="#" method="post"> {% csrf_token %}
    <input type="text" name="title">
    <textarea name="content" id="" cols="30" rows="10"></textarea>
    <input type="text" name="tags">
    <input type="submit">   
</form>

我从views.py打印POST数据

print(self.request.POST)
print(self.request.POST["title"])
print(self.request.POST["content"])
print(self.request.POST["tags"])
print(type(self.request.POST["tags"]))

通过

<QueryDict: {'csrfmiddlewaretoken': ['r4QIefk3YNSU0EivHwq8dwmHUNPFK4WwcvJyt5FK6gAQUdTl6IJ2m8V1Z71OZ1kU'], 'title': ['list'], 'content': ['display'], 'tags': ['as,string']}>
list
but
as,string
<class 'str'>

在QueryDict中,它们是['list'] ['display'] ['as,string']

的列表

但作为字符串检索。

这是怎么回事?

1 个答案:

答案 0 :(得分:2)

QueryDictMultiValueDict的子类,它允许为同一键处理多个值。默认情况下,MultiValueDict的__getitem__方法返回list中的最后一个元素。 但是正如@WillemVanOnsem在其评论中所说,MultiValueDict还提供了getlist方法,该方法返回与所选键关联的所有值。