无法打印从 Flask 后端发送的表单中的元素 [重复]

Posted

技术标签:

【中文标题】无法打印从 Flask 后端发送的表单中的元素 [重复]【英文标题】:Not able to print out element in Form that is sent from Flask Backend [duplicate] 【发布时间】:2021-11-13 02:00:14 【问题描述】:

问题: 我正在尝试从 React 前端的表单发送数据,并简单地从后端打印出结果,尽管我一直得到一个空字符串。

尝试:

Here is the axios call: 
formLogin = (e) => 
        e.preventDefault();
        axios
           .post('http://localhost:5000/post', 
               name: document.getElementById("name").value,
           )
           .then((res) => 
                console.log(res.data)
           );
        

这是 React 表单:

<div className="use

    rs-information">
                                <form onSubmit=this.formLogin className="patient-form" id="patient-form" name="patient-form" method='POST' action='http://localhost:5000/post' >
    
                                    <input type="text" name="name" id="name" />
                                    
                                    <label>
                                        Address: 
                                        <input name="Address" id="users-address" />
                                    </label>
    
                                    <label>
                                        City: 
                                        <input name="City" id="users-city" />
                                    </label>
    
                                    <label>
                                        State: 
                                        <input name="State" id="users-state" />
                                    </label>
    
                                    <label >
                                        Zip: 
                                        <input name="Zip" id="users-zip" />
                                    </label>
    
                                    <input type='submit' value='Submit'/>     
                                 </form>
                            </div>

这是 Flask 后端:

@app.route('/post',methods=['POST'])
def testPost():
    name = request.form.get("name","")
    print(name)
    return jsonify(name=name)

这与我在前端打印响应的方式有关吗?如何检查 axios 调用是否成功?如您所见,我正在通过 Id 获取表单输入,并通过 axios 调用将该数据发送到后端。我可以就如何进行测试提供一些指导吗?我是 react 和 Flask 的新手。

【问题讨论】:

检查开发者工具网络标签 先尝试使用邮递员进行测试,以确保烧瓶按预期工作。然后用前端测试一下。 @Senthil 我看到了发布请求,但它只是显示和空字符串。看到发帖成功了。 请使用 request.json["name"] 阅读 【参考方案1】:

sn-p:

axios
       .post('http://localhost:5000/post', 
           name: document.getElementById("name").value,
       )
       .then((res) => 
            console.log(res.data)
       );
    

将对象发布为 JSON,而不是表单。因此,您应该使用:

@app.route('/post',methods=['POST'])
def testPost():
    # name = request.form.get("name","")     # remove this line
    name = request.json["name"]              # add this line
    print(name)

【讨论】:

【参考方案2】:

这里是变化。参考打印逻辑,读取json字符串

@app.route('/post',methods=['POST'])
def testPost():
    content = request.json
    print content['name']
    return jsonify("name":name)

【讨论】:

以上是关于无法打印从 Flask 后端发送的表单中的元素 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

反应 axios 从 Flask 后端获取空数据

无法将多部分表单数据从 React 正确发送到 Express Js

如何将 Json 数据从 javaScript 发送到 Flask

前端与后端的数据交互(jquery ajax+python flask)

将数据从文本框发送到 Flask?

我无法将发布请求从反应表单发送到烧瓶服务器 [重复]