Flask中HTML调用downTime函数报错:无法构建URL端点
解决Flask中
downTime endpoint找不到的问题 核心原因
Flask的url_for()只能识别通过@app.route装饰器注册过的路由函数,你在ReportingTool.py中的downTime只是普通函数,没有被注册为Flask可访问的endpoint,所以会抛出BuildError。
修复步骤
1. 给ReportingTool.py中的downTime添加路由装饰器
在ReportingTool.py中导入Flask实例app,然后用@app.route装饰downTime函数,明确指定允许的请求方法(和表单的method保持一致,这里是POST):
# ReportingTool.py from webapp import app # 导入webapp.py中创建的Flask实例 from flask import request # 处理表单数据需导入request # 注册路由,指定POST方法 @app.route('/handle-downtime', methods=['POST']) def downTime(): # 写入表单处理逻辑,比如获取提交的字段值 device_id = request.form.get('device_id') down_start = request.form.get('start_time') # 处理完成后返回提示或重定向 return "停机时间记录已保存"
2. 确认webapp.py的导入顺序
保持webapp.py中先创建Flask实例,再导入路由模块的顺序,确保ReportingTool中的路由能被正确注册:
# webapp.py from flask import Flask # 先创建Flask实例 app = Flask(__name__) # 再导入views和ReportingTool,确保路由被加载 from views import * from ReportingTool import * if __name__ == '__main__': app.run(debug=True)
3. 保留HTML表单的action配置
你的HTML表单中action="{{ url_for('downTime') }}"无需修改,现在downTime已经是注册过的endpoint,url_for可以正确生成对应的请求地址。
额外说明
你通过重定向跳转到[site].html的方式完全可行,地址栏显示站点名称的需求不受影响,表单提交逻辑和页面跳转逻辑是独立的,不会互相干扰。
内容的提问来源于stack exchange,提问作者Lewis_SR
相关产品推荐
相关产品推荐

