我将代码重构为最小:
<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']
但作为字符串检索。
这是怎么回事?
答案 0 :(得分:2)
QueryDict
是MultiValueDict
的子类,它允许为同一键处理多个值。默认情况下,MultiValueDict的__getitem__
方法返回list中的最后一个元素。
但是正如@WillemVanOnsem在其评论中所说,MultiValueDict
还提供了getlist
方法,该方法返回与所选键关联的所有值。