Python 3.x 为什么不作为字典接收请求体-Django

Python 3.x 为什么不作为字典接收请求体-Django,python-3.x,django,django-views,django-forms,Python 3.x,Django,Django Views,Django Forms,我在Django中使用手动构建的表单(不是Forms.form或ModelForms.form) <div class="container"> <div id="tabs-contents"> <div id="infos" class="tab-content"> <form action=&quo

我在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>


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

请求。body
不返回字典。您必须在视图中指定请求类型才能获取词典,例如
request.get
request.POST

另外,请注意,这些实际上不是字典,而是行为类似于字典的对象(更具体地说),因此存在一些差异

要获取发布的数据并对其进行循环,可以执行以下操作:

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

是的,如果request.method='POST',我就这样检查了。但是我可以在其他请求中用json.loads()加载reauest:body,然后访问如下字段值:
body['field']
。这不是我的意思<代码>请求。POST有字典。因此,如果您想获取输入字段1的值,可以使用
request.POST['field1']
。我希望这件事能澄清。谢谢你,这对我很有帮助。