我正在学习烧瓶。我想开始创建一个简单的表单选择页面。我的目的是让用户选择该选项,然后使用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.我做错了什么?
答案 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
中使用它。