Flask同页面提交表单后模板if判断始终走else分支问题求助
问题修复方案
后端代码错误点
- 重复定义了三次
index视图函数,Python中后定义的函数会覆盖之前的同名函数,只有最后一个index会生效,前两个完全无效。 - 最后一个
index函数给模板传参时没有指定变量名,模板中使用的变量是choice,你直接传selection的话模板根本接收不到对应变量。 - 需确保已经从flask中导入了
request对象,否则获取表单值的逻辑会报错。
修复后的main.py代码:
from flask import Flask, render_template, request app = Flask(__name__) @app.route('/', methods = ['GET', 'POST']) def index(): choice = None if request.method == 'POST': choice = request.form.get('options') return render_template('index.html', choice=choice) if __name__ == '__main__': app.run(debug=True)
前端代码说明
你现有的index.html逻辑不需要修改,当前的form提交会刷新当前页展示结果,如果你想要完全无刷新的交互效果,可以额外引入JavaScript监听单选按钮点击事件,通过AJAX请求后端获取结果后直接更新页面内容,不需要点击提交按钮也不需要刷新页面。
验证方法
替换后端代码后启动服务,选中YES选项点击提交,即可正常看到it works!的提示内容。
内容的提问来源于stack exchange,提问作者priceyrelish
相关产品推荐
相关产品推荐

