Flask应用无URL前缀返回404,需自动重定向至/views路径
解决Flask根路径重定向到/views的问题
方法一:添加根路径路由实现重定向
直接在app.py中给根路径注册路由,用Flask的redirect函数实现跳转,避免硬编码路径的同时保证逻辑清晰:
from flask import Flask, redirect app = Flask(__name__) # 假设你已通过Blueprint或直接路由完成/views前缀的业务注册 # 示例: # from your_bp import main_bp # app.register_blueprint(main_bp, url_prefix='/views') # 根路径重定向逻辑 @app.route('/') def root_redirect(): return redirect('/views') if __name__ == '__main__': app.run(port=8000)
如果之前加路由出问题,大概率是未正确导入redirect、存在路由冲突,或是修改后没重启Flask服务导致变更未生效。
方法二:用请求钩子全局处理
不想单独注册根路由的话,可通过before_request钩子拦截根路径请求,自动完成重定向:
from flask import Flask, redirect, request app = Flask(__name__) app.register_blueprint(your_bp, url_prefix='/views') @app.before_request def intercept_root(): if request.path == '/': return redirect('/views') if __name__ == '__main__': app.run(port=8000)
这个方法会在所有请求处理前检查路径,适合根路径无其他业务用途的场景。
关键注意点
- 确保
/views路径本身可正常访问:检查Blueprint的url_prefix是否设为/views,或是直接注册的@app.route('/views')路由是否存在,否则重定向后仍会返回404。 - 排查之前的路由问题:检查是否有循环导入、重复定义根路径路由的情况,或是代码缩进等语法错误。
内容的提问来源于stack exchange,提问作者Rayaan Study
相关产品推荐
相关产品推荐

