我正在使用带有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?
答案 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'))