如何使用Flask响应get请求?

时间:2015-02-25 21:40:13

标签: python flask jinja2

如何使用Flask响应get请求?我在文档中找不到任何内容,我发现很难理解,我也在网上搜索过,一无所获。

我在这里有一个表单是代码的一部分:

<input type="radio" name="topic" value="{{ topic }}" id="{{ topic }}" onclick="submit()">

现在您可以看到,输入时,输入会发送'topic'的值。

如何使用Flask响应任何类似输入的GET请求?像这样:

@app.route('/topic/[any 'topic' value from form]', methods=['GET'])
def topic():
    topic = request.form['topic']
    return render_template('topic.html', topic=topic)

感谢。

更新:

所以我决定按建议使用帖子。我尝试用这段代码测试帖子:

@app.route('/topic/', methods=['POST'])
def topic():
    chosenTopic = request.form['chosenTopic']
    return render_template('topic.html', chosenTopic=chosenTopic)

以及此表格:

<input type="radio" name="chosenTopic" value="{{ topic[3:topic|length-4:] }}" id="chosenTopic" onclick="submit()">

我在/ topic页面上测试了一个简单的{{selectedTopic}}但没有出现?有没有人有什么建议?

1 个答案:

答案 0 :(得分:1)

这样的事情就是一个简单的例子。

from flask import Flask, request, redirect

app = Flask(__name__)

# really look in db here or do whatever you need to do to validate this as a valid topic.
def is_valid_topic(topic):
    if topic == "foo":
        return False
    else:
        return True

@app.route('/')
def index():
    return '<html><form action="topic/" method="post"><input name="topic" type="text"><input type="submit"/></form></html>'

@app.route('/topic/', methods=['POST'])
def find_topic():
    t = request.form['topic']
    if is_valid_topic(t):
        return redirect('topic/%s' % t)
    else:
        return "404 error INVALID TOPIC", 404

@app.route('/topic/<topic>')
def show_topic(topic):
    if is_valid_topic(topic):
        return '''<html><h1>The topic is %s</h1></html>''' % topic
    else:
        return "404 error INVALID TOPIC", 404

if __name__ == '__main__':
    app.run(debug=True)

您接受POST请求中的参数并在之后重定向到GET。