如何打印这样的内容:
{
username = admin
email = admin@localhost
id=42
}
仅使用method = ['POST']
而不使用render_template
?
PS:我已经使用['GET']
这是我的代码:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/', methods=['POST'])
def index():
if request.method == 'POST':
return jsonify(username="admin",
email="admin@localhost",
id="42")
else:
if request.method == 'POST':
return jsonify(username="admin",
email="admin@localhost",
id="42")
if __name__ == "__main__":
app.run()
我得到的是405方法错误。
答案 0 :(得分:0)
嘿,确保你的html中的尾随藏匿是正确的。
您可以参考:Flask - POST Error 405 Method Not Allowed和烧瓶文档:http://flask.pocoo.org/docs/0.10/quickstart/
这个
<form action="/" method="post">
这是相同但不同的
<form action="" method="post">
在没有尾部斜杠的情况下访问它将导致Flask重定向到带有斜杠的规范URL。
鉴于你的错误405,我怀疑这是你的问题。 GET很好,因为你只是被重定向。
答案 1 :(得分:0)
尝试在GET请求中返回表单(如biobirdman所说)。不确定为什么需要request.method == 'POST'
条件语句。路径中的参数methods=['POST']
应该足够了。
试试这个:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/', methods=['POST'])
def index():
return jsonify(username="admin", email="admin@localhost", id="42")
@app.route('/', methods=['GET'])
def form():
return "<form action='/' method='POST'>" \
"<input type='submit'>" \
"</form>"
if __name__ == "__main__":
app.run()