Mako模板渲染的HTML中JavaScript无法加载(404错误)求助
Mako模板渲染的HTML中JavaScript无法加载(404错误)求助
兄弟,这问题我太熟啦!你现在的核心问题是Bottle服务器没有配置静态资源路由——你只给/main这个业务接口写了路由,但浏览器请求javascript/script.js的时候,Bottle找不到对应的处理逻辑,直接返回404了。
给你几个简单的解决办法:
1. 给JavaScript文件单独加路由
在你的daemon.py里添加这段代码,专门处理/javascript/开头的请求:
from bottle import static_file @route('/javascript/<filename>') def serve_javascript(filename): # 指定静态文件的根目录是html/javascript return static_file(filename, root='html/javascript')
这样浏览器请求/javascript/script.js时,Bottle就会去html/javascript/目录下找对应的文件返回。
2. 配置通用静态资源路由(更推荐)
如果以后还会加CSS、图片这类静态资源,直接把整个html目录设为静态资源目录更方便:
from bottle import static_file @route('/<filepath:path>') def serve_static(filepath): return static_file(filepath, root='html')
这个路由会匹配所有/开头的非业务请求,比如javascript/script.js就会对应到html/javascript/script.js,完美适配你现在的script标签路径。
⚠️ 注意:这个静态路由要放在所有业务路由(比如你的/main路由)的后面,不然会覆盖掉业务接口的请求。
顺便优化下你的Mako配置
你之前把html/javascript加到了TemplateLookup里,其实完全没必要——TemplateLookup是用来找Mako模板文件的,静态资源是Bottle负责处理的,所以可以把这段代码简化:
lookup = TemplateLookup(directories=["html"])
按上面的步骤改完,再刷新页面,你的script.js应该就能正常加载啦!
备注:内容来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

