Flask中@app.route('/index')不生效但带.html后缀路由生效原因问询
Flask 两种路由写法的核心差异说明
两种写法的本质区别是@app.route()装饰器绑定的用户可访问的URL路径完全不同,和你函数内部render_template加载的模板文件名没有强制关联:
- 写法1:
@app.route('/index')
该规则绑定的访问路径为域名/index,只有用户请求/index路径时,才会触发index函数返回index.html模板内容。你测试时无法生效,大概率是你访问的路径是/index.html,和你绑定的路径不匹配,自然无法命中该路由规则,返回404错误。 - 写法2:
@app.route('/index.html')
该规则绑定的访问路径为域名/index.html,你测试时如果直接输入带.html后缀的路径,刚好匹配该规则,所以可以正常返回页面。
额外补充一个容易踩的相关坑:如果你的项目static目录下存在同名的index.html静态文件,Flask默认会优先响应静态文件的请求,不会触发你自定义的同名路由规则,调整目录结构或者修改静态文件优先级配置即可解决。
内容的提问来源于stack exchange,提问作者Avery Lim
相关产品推荐
相关产品推荐

