如何仅使用POST方法打印输出?

时间:2014-11-24 11:33:39

标签: python json flask

如何打印这样的内容:

{
    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方法错误。

2 个答案:

答案 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()