【问题标题】:Google App Engine Jinja2 template extends base template from parent folderGoogle App Engine Jinja2 模板从父文件夹扩展基本模板
【发布时间】:2014-01-24 05:43:16
【问题描述】:

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

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

假设这4个文件在some文件夹下,那么在内容文件的开头,我只要放上{% extends "base.html" %},html文件就渲染好了。

但是,随着项目的发展,创建的页面越来越多。我想通过创建子文件夹来组织文件。所以现在假设在根目录中,我有 base.html 和 subfolder1。在 subfolder1 中,我有 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?

【问题讨论】:

    标签: python google-app-engine jinja2


    【解决方案1】:

    更清楚:

    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
    

    【讨论】:

      【解决方案2】:

      试试这个:

      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 (class jinja2.FileSystemLoader(searchpath, encoding='utf-8'))

      【讨论】:

        猜你喜欢
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        • 2019-02-09
        • 1970-01-01
        相关资源
        最近更新 更多