使用“GET”在Flask

时间:2016-04-16 18:47:55

标签: python flask

我正在学习烧瓶。我想开始创建一个简单的表单选择页面。我的目的是让用户选择该选项,然后使用GET将其显示在另一个页面中。 我正在尝试以下代码。

from flask import Flask, render_template, request, redirect
app = Flask(__name__)

@app.route('/')
def search():

    return render_template('select_doc.html')

@app.route('/view_doc/<k>')
def view_doc(k):
    return render_template('view_doc.html',k=k)

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

这是我的select_doc.html

{% block content %}

<body>
    <h1>Pick your plag</h1>
        <form action='/view_doc'>


                <select name="k">
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <option value="4">4</option>
                    <option value="5">5</option>
                </select>
<input type='submit' value='Select'>
</form>
</body>
{% endblock content %}
</html>

这是我的view_doc.html

<html>
    {% block content %}
    <body>
      <br>{{ k }}<br>
    </body>
        {% endblock content %}
        </html>

但是,我收到错误404 not found。 这是我的run.py.我做错了什么?

2 个答案:

答案 0 :(得分:0)

在view_doc

中需要使用尖括号
@app.route('/view_doc/<k>')
def view_doc(k):
    return render_template('view_doc.html',k=k)

您还应该稍微整理一下代码,使其更具可读性。

答案 1 :(得分:0)

您的路线需要<k>参数,但表格不会发送。当您使用表单method="get"点击提交时(默认情况下未指定),请求网址将为/results?k=value

因此,您要么从路由中删除<k>并从查询字符串中提取它,要么编写一些js以将值放在网址上,如/results/value。最简单的选项是第一个,因此您可以request.args.get('k')提取k并在render_template中使用它。