如何在HTML页面中使用Flask路由传递的参数?错误排查
问题解决方法
错误原因分析
- Jinja2语法误用:模板中使用了
{{ if ... }}格式,但Jinja2的流程控制语句(如if判断)需要用{% ... %}包裹,{{ ... }}仅用于输出变量值。 - 变量名不匹配:Python路由里传递给模板的变量名是
keys,但模板中调用的是argument,两者不一致导致无法正确获取参数。
修正后的代码
Python文件
@app.route('/home/<argument>') def home_page(argument): return render_template('home.html', argument=argument)
将传递的变量名改为argument,与模板中要使用的变量名保持统一。
HTML文件
<!-- inside the url http://127.0.0.1:5000/home/age --> {% if argument == "age" %} <p>Age 50</p> {% else %} <p>Invalid</p> {% endif %}
把原有的{{ if ... }}和{{ endif }}替换为Jinja2标准的流程控制语法{% if ... %}和{% endif %}。
验证效果
启动Flask应用后,访问http://127.0.0.1:5000/home/age会显示Age 50;访问其他路径(如http://127.0.0.1:5000/home/name)则显示Invalid。
内容的提问来源于stack exchange,提问作者Muthu Vijay
相关产品推荐
相关产品推荐

