在Linux上CherryPy / Mako的%include路径问题(在Windows上正常)
我有一个应用程序,里面有以下文件:
/path_to_app
app.py
/html
page.html
/js
page.js
在app.py文件中,我加载并渲染一个mako模板。这个模板文件是html目录下的page.html。这个页面里有一行:
<%include file="../js/page.js" />
这行代码的目的是找到并包含合适的JavaScript页面(在对该文件进行mako替换后)。在我的Windows开发机器上,这个功能正常,但当我把它部署到Ubuntu Linux服务器上进行进一步测试时,出现了一个错误:TemplateLookupException: 模板URI "../js/fund_page.js" 无效 - 它不能在根路径之外使用相对路径。
我尝试把包含的路径改成绝对路径,指向应用程序的根目录:
<%include file="/js/page.js" />
但这样也没有解决问题,返回的信息是:TemplateLookupException: 找不到URI为u'/js/fund_page.js'的模板。
我需要做什么更改才能在Linux上使用这个mako包含?有没有办法让它在Windows和Linux上都能兼容?
2 个回答
-1
你应该把“js”文件夹的上级目录添加到你的TemplateLookup实例的directories
参数中。比如说:
mako_lookup = TemplateLookup(directories=[ root + "/project/templates",
root + "/public"])
0
我解决这个问题的方法很简单,就是把那个包含的js文件移动到和调用它的html文件同一个文件夹里。