在Linux上CherryPy / Mako的%include路径问题(在Windows上正常)

2 投票
2 回答
1342 浏览
提问于 2025-04-17 04:40

我有一个应用程序,里面有以下文件:

/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文件同一个文件夹里。

撰写回答