Python:Mako每个应用程序的模板查找
我使用cherrypy和Mako作为模板引擎 我希望Mako根据所请求的应用程序查找不同的目录 即。 我有三个“应用”:站点、管理和安装 它们都有自己的模板文件夹,结构类似:Python:Mako每个应用程序的模板查找,python,templates,cherrypy,mako,Python,Templates,Cherrypy,Mako,我使用cherrypy和Mako作为模板引擎 我希望Mako根据所请求的应用程序查找不同的目录 即。 我有三个“应用”:站点、管理和安装 它们都有自己的模板文件夹,结构类似: from libs.plugins.template import MakoTemplatePlugin engine = cherrypy.engine makoTemplate = MakoTemplatePlugin(engine, self.base_dir) setTemplateDirs(makoTempla
from libs.plugins.template import MakoTemplatePlugin
engine = cherrypy.engine
makoTemplate = MakoTemplatePlugin(engine, self.base_dir)
setTemplateDirs(makoTemplate, self.template_path)
- /模板
- /模板/站点
- /模板/管理员
- /模板/安装
- /模板/系统
from libs.plugins.template import MakoTemplatePlugin
engine = cherrypy.engine
makoTemplate = MakoTemplatePlugin(engine, self.base_dir)
setTemplateDirs(makoTemplate, self.template_path)
MakoTemplatePlugin是该插件的一个稍加修改的版本,其名称与Twiseless中的相同,如上链接
这段代码的作用是将TemplateLookup设置为使用全局配置文件中的默认模板目录。i、 e
- /模板
- /模板/系统
setTemplateDirs
,这将解决问题。。。但事实并非如此
我不知道该把函数放在哪里,所以每次请求页面时它都会运行
e、 g
这显然只在应用程序首次加载时起作用。。。我尝试将更新函数调用移动到一个单独的方法update
,并尝试为每个页面调用该方法,例如:
@cherrypy.exposed
@cherrypy.tools.render(template='index.html')
@update
def index(self):
pass
但这只是给了我配置相关的错误
必须有一个更简单的方法,而不是继续在这件事上捣乱
你会怎么做
非常感谢
汤姆我让这个工作起来了。感谢stephan提供mako工具示例的链接: 我只是稍微修改了一下,让它工作起来 如果有人想知道,它的基础是在全局配置中定义
tools.mako.directories
,然后可以在单个应用程序配置文件中覆盖它
e、 g
server.conf
...
tools.mako.directories: ['', 'system']
...
...
tools.mako.directories: ['site', 'system']
...
site.conf
...
tools.mako.directories: ['', 'system']
...
...
tools.mako.directories: ['site', 'system']
...
我做了一些额外的工作来将相对URI转换为绝对路径,但上面解释了它的关键。我不确定我是否理解了这个问题。是什么阻止您使用受信任的设置
tools.mako.directories=“path/to/template”
,然后在模板映射器中执行例如@cherrypy.tools.mako(filename=“/admin/adminpage.html”)
?[我可能完全不了解Twiseless,因为我不了解Twiseless]我已经研究了一些将mako与cherrypy集成在一起的不同实现,只是有点拘泥于Twiseless实现。那个链接看起来很有趣。。。我可以在类本身上使用类似于@cherrypy.tools.mako.directories(['/template/site'])的修饰符吗?然后在指定文件时,它将只使用这些目录…对吗?:)嗯,不确定@cherrypy.tools.mako.directories(['/template/site'])
是否有效。我会首先尝试是否可以为每个应用程序设置tools.mako.directories
(请参阅)。如果这不起作用(我不知道,只能在星期一检查),那么我会使用我上面建议的解决方案,即将模板目录设置为基础,并使用相对路径。