我有一些问题。 我是python和flask的新手。
我正在构建一个API,用于查询数据库,单独的应用程序前端和后端。但是问题已经来解决Flask的搜索结果。
示例:
以下' curl'命令用户名' miguel'注册一个新用户。和密码' python':
$ Curl -X POST -H -i "Content-Type: application / json
'd' {"username":" miguel","password":"python"} 'http://127.0.0.1:5000/api/users
RETURN:
HTTP / 1.0 201 CREATED Content-Type:application / json 内容长度:27位置:http://127.0.0.1:5000/api/users/1服务器: Werkzeug / Python 0。9。4 / 2.7。3日期:2013年11月28日星期四19:56:39 GMT { "用户名":"米格尔" }
通过doterminal我们返回用户名,有人知道检索并在前端显示用户姓名的方法。
Resaltar它应该考虑字体结束并返回并在不同的机器上运行。
-------- UPDATE -------
BACKEND
@app.route('/api/users', methods=['POST'])
def new_user():
username = request.json.get('username')
password = request.json.get('password')
if username is None or password is None:
abort(400) # missing arguments
if User.query.filter_by(username=username).first() is not None:
abort(400) # existing user
user = User(username=username)
user.hash_password(password)
db.session.add(user)
db.session.commit()
return (jsonify({'username': user.username}), 201,
{'Location': url_for('get_user', id=user.id, _external=True)})
FRONTEND
@home_blueprint.route('/cadastro', methods=['POST'])
def cadastro():
username = request.form['username']
password = request.form['password']
if username and password:
url = 'http://127.0.0.1:4000/api/users'
payload = {'username': username,'password':password}
headers = {'content-type': 'application/json'}
r = requests.post(url, data=json.dumps(payload), headers=headers)
else:
return "ERRO"
return "Create new user sucesso!"
答案 0 :(得分:0)
(将我的评论作为答案发布)
您可以使用r.text
从the document获取requests.post
的重新调整数据:
当您发出请求时,Requests会根据HTTP标头对响应的编码进行有根据的猜测。访问
r.text
时会使用请求猜到的文本编码。
所以只需替换
return "Create new user sucesso!"
与
return r.text
在这种情况下,r.text
是requests.post(url, data=json.dumps(payload), headers=headers)
返回数据,由以下人员创建:
return (jsonify({'username': user.username}), 201,
{'Location': url_for('get_user', id=user.id, _external=True)})