l.z*_*.lz 3 html python redirect radio-button flask
我对 Flask 很陌生,我想做以下事情:
Run Code Online (Sandbox Code Playgroud)<form action="{{ url_for('click') }}" method="POST"> <div class="half"> <input type="radio" name="option" value="a" /> </div> <div class="half"> <input type="radio" name="option" value="b" /> </div> <input type="submit" value="Submit"> </form>
当单击提交按钮时,页面应根据选定的单选按钮值(即“a.html”)重定向到另一个页面。
我被这里的 python 代码困住了:
Run Code Online (Sandbox Code Playgroud)@app.route('/') def home(): return render_template('index.html') @app.route('/<selectedValue>', methods=['POST']) def click(): selectedValue = request.form['option'] return redirect(url_for(selectedValue + '.html'))
任何建议将不胜感激!
您的代码不起作用,因为当按下提交按钮时,您将向您的目标发送一个发布请求,该目标由action
模板中的属性定义。但是,定义的端点需要一个selectedValue
根据您的选择而变化的参数。您在模板中使用的函数url_for()
无法提供此功能,因为当模板发送到客户端时(即在做出选择之前),它会呈现为纯 HTML。
尝试不同的方法:
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
if request.method == 'POST':
selectedValue = request.form['option']
return redirect(url_for('click', selectedValue=selectedValue))
return render_template('index.html')
@app.route('/<selectedValue>')
def click(selectedValue):
return render_template(selectedValue)
if __name__ == '__main__':
app.run(host='localhost', port=5000, debug=True)
Run Code Online (Sandbox Code Playgroud)
这样您就可以将POST
请求发送到home
端点并使用该request
对象来获取您的option
值。然后您将调用重定向函数来提供selectedValue
.
注意:我建议为您使用的每个模板使用单独的端点函数。
归档时间: |
|
查看次数: |
7300 次 |
最近记录: |