我在Django中使用手动构建的形式(而不是Forms.form
或ModelForms.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.GET
或request.POST
。
另外,请注意,这些实际上不是字典,而是像字典一样的对象(更具体地说,django.http.request.QueryDict),因此存在一些差异。
要获取您发布的数据并遍历它,您可以执行以下操作:
data = request.POST
for key in data:
print(f'{key}: {data[key]}')