Google App Engine Jinja2模板从父文件夹扩展基本模板

时间:2014-01-06 18:11:17

标签: python google-app-engine jinja2

我正在使用带有Python / Jinja2的Google App Engine

我有一些html内容文件,例如content1.html,content2.html和content3.html。他们每个人都需要扩展一个名为base.html的基本html文件。

假设这4个文件位于某个文件夹中,那么在内容文件的开头,我只需要放置{%extends“base.html”%},并且html文件渲染得很好。

然而,随着我的项目的发展,已经创建了越来越多的页面。我想通过创建子文件夹来组织文件。所以现在假设在根目录中,我有base.html和subfolder1。在子文件夹1中,我有content1.html。

在我的python中:

JINJA_ENVIRONMENT = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(os.path.dirname(__file__))+"\\subfolder1"))
template = JINJA_ENVIRONMENT.get_template("content1.html")
template.render({})

JINJA_ENVIRONMENT = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(os.path.dirname(__file__))))
template = JINJA_ENVIRONMENT.get_template("subfolder1\\content1.html")
template.render({})

但是在content1.html中,

{% extends "????????" %}

应该在问号中添加什么来扩展父文件夹中的base.html?

2 个答案:

答案 0 :(得分:9)

更清楚:

from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates'))

文件夹templates现在是模板的根目录:

template = env.get_template('content.html') # /templates/content.html
self.response.write(template.render())

或使用子文件夹:

template = env.get_template('folder/content.html')
self.response.write(template.render())
content.html中的

{% extends "base.html" %}        # /templates/base.html
{% extends "folder/base.html" %} # /templates/folder/base.html

答案 1 :(得分:5)

试试这个:

JINJA_ENVIRONMENT = jinja2.Environment(
    loader=jinja2.FileSystemLoader(
        [os.path.dirname(os.path.dirname(__file__)),
         os.path.dirname(os.path.dirname(__file__)) + "/subfolder1"]))

然后:

{% extends "base.html" %}

据此: http://jinja.pocoo.org/docs/api/#basics(类jinja2.FileSystemLoader(searchpath,encoding ='utf-8'))