我想能够获得数据发送到我的Flask应用程序。我已经尝试访问请求。数据,但它是一个空字符串。如何访问请求数据?
from flask import request
@app.route('/', methods=['GET', 'POST'])
def parse_request():
data = request.data # data is empty
# need posted data here
这个问题的答案让我问在Python Flask中获取原始POST体,而不管接下来的Content-Type头,这是关于获取原始数据而不是解析数据。
下面是一个发送表单数据以向数据库添加用户的示例。检查请求。method == "POST"检查表单是否已提交。根据要求使用钥匙。表单来获取表单数据。否则,使用<form>呈现HTML模板。表单中的字段应该具有与request.form中的键相匹配的name属性。
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route("/user/add", methods=["GET", "POST"])
def add_user():
if request.method == "POST":
user = User(
username=request.form["username"],
email=request.form["email"],
)
db.session.add(user)
db.session.commit()
return redirect(url_for("index"))
return render_template("add_user.html")
<form method="post">
<label for="username">Username</label>
<input type="text" name="username" id="username">
<label for="email">Email</label>
<input type="email" name="email" id="email">
<input type="submit">
</form>
在编写一个Slack机器人时,它应该发送JSON数据,我得到了一个有效载荷,其中内容类型是application/x-www-form-urlencoded。
我尝试了request.get_json(),它没有工作。
@app.route('/process_data', methods=['POST'])
def process_data():
req_data = request.get_json(force=True)
相反,我使用request。form获取包含JSON的表单数据字段,然后加载它。
from flask import json
@ app.route('/slack/request_handler', methods=['POST'])
def request_handler():
req_data = json.loads(request.form["payload"])
下面是一个解析发布的JSON数据并将其回显的示例。
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/foo', methods=['POST'])
def foo():
data = request.json
return jsonify(data)
使用curl发布JSON:
curl -i -H "Content-Type: application/json" -X POST -d '{"userId":"1", "username": "fizz bizz"}' http://localhost:5000/foo
或者使用Postman:
使用request.get_json()获取发布的JSON数据。
data = request.get_json()
name = data.get('name', '')
使用请求。当使用POST方法提交表单时,表单可以获取数据。
name = request.form.get('name', '')
使用请求。args获取URL查询字符串中传递的数据,就像使用get方法提交表单时一样。
request.args.get("name", "")
请求。Form等是dict-like的,如果没有传递,使用get方法来获得一个默认值。
进口的要求:
from flask import request
URL查询参数:
name = request.args.get("name")
age = request.args.get("age")
表单输入:
name = request.form.get('name')
age = request.form.get('age')
OR(如果知道键存在,则使用索引,指定输入字段的名称)
name = request.form['name']
age = request.form['age']
JSON数据(适用于内容类型application/ JSON)
data = request.get_json()