为什么不接收请求体作为字典- Django



我在Django中使用手动构建的形式(而不是Forms.formModelForms.form)

<div class="container">
<div id="tabs-contents">
<div id="infos" class="tab-content">
<form action="/page/" method="POST">
{% csrf_token %}
<div class="infos-form-content">
<div class="infos-row-1">
<input id="field1" type="text" value="" name="field1">
<input id="field2" type="text" value="" name="field2">
</div>
<div class="infos-row-2">
<input id="field3" type="date" value=""
name="field3">
</div>
...
...
</div>
<button type="submit">Save</button>
</form>
</div>
</div>                        
</div>

它还包含动态输入字段(由JavaScript创建)。当我检查视图中的request.body类型(当然解码request.body.decode('utf-8')后),我发现它是一个字符串,而不是一个字典。为什么会这样呢?如何在字典中接收表单数据?

request.body不返回字典。你必须在视图中指定获取字典的请求类型,例如request.GETrequest.POST

另外,请注意,这些实际上不是字典,而是像字典一样的对象(更具体地说,django.http.request.QueryDict),因此存在一些差异。

要获取您发布的数据并遍历它,您可以执行以下操作:

data = request.POST
for key in data:
print(f'{key}: {data[key]}')

最新更新