Flask新手问题:request.form取值后模板为何显示{resulte}而非输入值?
Flask表单提交后无法正确显示用户输入的问题解决
问题现象
提交表单后,/result页面直接显示{resulte},无法展示用户在Name输入框中填写的内容。
错误原因
Flask默认使用Jinja2模板引擎,模板中渲染变量的正确语法是双大括号{{ 变量名 }},你当前使用单大括号包裹变量,导致模板引擎未解析变量,直接输出了原始字符串。
修正步骤
- 修改结果页面
resultperso.html中的变量渲染语法,将单大括号改为双大括号 - 可选优化:表单页面的
action属性使用相对路径/result,避免硬编码主机地址,提升代码可移植性
修正后的代码
Python Flask代码(无需修改)
from flask import Flask, render_template, request app=Flask(__name__) @app.route('/') def student(): return render_template('testperso.html') @app.route('/result', methods=['POST','GET']) def result(): if request.method=='POST': result=request.form['Name'] return render_template('resultperso.html',resulte=result) if __name__=="__main__": app.run(debug=True)
优化后的表单页面(testperso.html)
<html> <body> <form action = "/result" method = "POST"> <p>Name <input type = "text" name = "Name" /></p> <p>Physics <input type = "text" name = "Physics" /></p> <p><input type = "submit" value = "submit" /></p> </form> </body> </html>
修正后的结果页面(resultperso.html)
<!doctype html> <html> <body> <table border = 1> <h1>{{ resulte }}</h1> </table> </body> </html>
修改完成后,提交表单即可在/result页面正确显示用户输入的Name值。
内容的提问来源于stack exchange,提问作者Meriole
相关产品推荐
相关产品推荐

