当前位置: 首页 > 知识库问答 >
问题:

我无法将帖子请求从 react 表单发送到烧瓶服务器 [重复]

方昊英
2023-03-14

我有一个reactjs作为前端,flask服务器作为后端。我试图从注册表中发送数据(使用Formik)。当我做一个post请求时,我有一个错误500。我注意到当我使用postman时,一切都很好,flask在postgresql中创建了一个新记录。

前端在 http://localhost:3000/register 上,后端在 http://localhost:5002/adduser 我现在应该做什么?

function handleSubmit(values, actions) {

  const options = {
    headers: {
      'Content-type': 'application/json',
      'Access-Control-Allow-Origin': '*',
      'Referrer-Policy': 'origin-when-cross-origin'
    },
    method: 'POST',
    mode: 'no-cors',
    body: JSON.stringify(values)
  }

fetch('http://localhost:5002/adduser', options)
    .then(response => console.log(response))
    .catch(error => console.error(error))
}
@app.route('/adduser', methods=['GET', 'POST'])
def register():
  if request.method == "POST":
    print(request.form['userName'])
    print(request.form['email'])
    data = {
      'name': request.form['userName'],
      'surname': request.form['surname'],
      'email': request.form['email'],
      'user_password': request.form['password'],
      'phone_number': request.form['phoneNumber']
    }
    mydb = Database(host=os.getenv('host'), database=os.getenv('database'), user=os.getenv('user'), password=os.getenv('password'))
    mydb.insert_data(data)

    return jsonify({'mydata': data})

    # name = request.form['name']
    # surname = request.form['surname']
    # email = request.form['email']
    # password = request.form['password']
    # phone_number = request.form['phoneNumber']
  return "<h1>Hello Flask</h1>"

if __name__ == "__main__":
    app.run(debug=True, port=5002)
    app.secret_key = os.urandom(24)

共有1个答案

郑俊彦
2023-03-14

无法通过json Content-type请求访问request.form。

你需要更换

'Content-type': 'application/json'

通过

'Content-Type': 'multipart/form-data'

您的句柄提交函数将类似于以下内容:

function handleSubmit(values, actions) {

let options = {
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    method: 'POST'
  };

  options.body = new FormData();
  for (let key in values) {
    options.body.append(key, values[key]);
  }

  fetch('http://localhost:5002/adduser', options)
    .then(response => console.log(response))
    .catch(error => console.error(error))
  }
}
}

另一个可能的解决方案是保持客户端代码不变,并通过request.json而不是request.form访问您的数据。

 类似资料:
  • 我尝试使用axios对烧瓶服务器进行POST: 现在是烧瓶的部分 但是,我最终会出现以下错误: 无法加载XMLHttpRequesthttp://127.0.0.1:5000/test.对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access control Allow Origin”标头。起源'http://localhost:3000因此不允许访问。 为什么?我将按照建议设置标题

  • 我遇到了一个问题,我的javascript/python脚本。我想做的是传递一个字符串到python烧瓶,这样我以后可以使用它。当我点击按钮发送字符串时,没有错误,但什么也没发生。我基本上是一个自学成才的程序员,所以如果我的脚本格式不正确,我道歉! Javascript: 蟒蛇瓶: 我希望能够看到打印到控制台或命令提示符的字符串,我假设print()是正确的方法?欢迎任何帮助,谢谢:)

  • 客户端代码: 服务器代码: 问题是我的用户名和密码总是空的。 我还尝试使用: 和 打印内容时,我有: 编辑: 我添加了json。转储和使用请求。获取_json(),它就成功了

  • 我在用烧瓶做一个网站。它在top.html中使用sql显示一个列表,其中每个元素都是超文本。 所以我想知道从列表中点击了哪个超文本,这样我就可以在/text中加载它各自的内容。请同时提供python代码(flask代码)。

  • 我遇到了表单400错误,并尝试了其他解决方案。它让我的状态有所改善,但并没有阻止错误的发生。我有 模板/注册。html: 形式。py: 这些观点。py: 这些指纹看起来像 就像我预料的那样。我假设根据字段的验证器重新呈现页面,并显示错误消息“Passwords must match”。我该怎么做才能让此表单失败并重新提交页面?非常感谢。

  • 嗨,我正在编写一个博客脚本,但收到400个错误请求。Python代码: Html代码: 我以前从未收到过这样的错误,我不知道为什么。我猜表格可能有错误。 求你帮帮我