如何使多个web2py应用程序使用相同的layout.html?

5
我有三个应用程序,但我希望它们都使用相同的layout.html和css。有没有办法实现这一点?
编辑:
我将静态文件夹和layout.html等放在了web2py根目录下的/common/中。
以下是我在模型中所做的内容:
import os
global web2py_path
web2py_path = os.environ.get('web2py_path', os.getcwd())
session.layout_path = web2py_path + '/common/layout.html'
print 'session.layout_path = ' + session.layout_path

然后在视图中:
{{extend session.layout_path}}

编辑 2:

关于下面评论提到的编译问题,我决定把'common'文件夹放在'/applications/'中,并像常规应用程序一样将静态文件夹(css、images)放在'common'文件夹内。然后我把layout.html放在'common'的根目录下。接着在另一个应用程序的视图中,我使用了:

{{extend '../../common/layout.html'}}

该页面引用了common应用程序中的layout.html。然后,该layout.html文件使用以下方式引用“common”文件夹中的静态文件:

{{=URL('common','static','css','style.css')}}

像普通应用程序一样操作即可。

请注意,如果您使用{{extend variable}},则无法编译您的应用程序。编译仅适用于显式指定模板文件路径。 - Bruno Rocha - rochacbruno
啊,好的,你能在文档中引用这个限制吗? - Aram Kocharyan
1个回答

5

在您的web2py文件夹的根目录中创建一个名为“templates”的新文件夹。

/web2py/templates

将您的layout.html放置在这里。

现在,在您的视图中进行以下操作:

{{extend 'path/to/web2py/templates/layout.html'}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接