1

Google アプリ エンジンと Python の開発は初めてで、Jinja2 をテンプレート エンジンとして使用しようとしています。ヘッダーとフッターを「インクルード」しようとしているページがあり、次のエラーが発生し続けます: TemplateNotFound: base/header.html

私のコードは以下です。何か提案があれば教えてください。

パイソン

JINJA_ENVIRONMENT = jinja2.Environment(
   loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
   extensions=['jinja2.ext.autoescape'])

class MainPage(webapp.RequestHandler):


    def get(self):
        template_values = {'title' : 'Test Value'}
        template = JINJA_ENVIRONMENT.get_template('/public/templates/index.html')
        self.response.write(template.render(template_values))

構成

libraries:
- name: webapp2
  version: latest
- name: jinja2
  version: latest

ファイル構造

- my application
  - public
    - scripts
    - stylesheets
    - templates
      - base
        - header.html
        - footer.html
      - index.html
  - app.yaml
  - myapplication.py

HTML (index.html)

{% include "base/header.html" %}
<nav class="top-bar" style="">
  <!-- more html here -->
</nav>
{% include "base/footer.html" %}
4

1 に答える 1

0

jinja2 の loader プロパティを使用していないので、この行が何をするのかわかりません

loader=jinja2.FileSystemLoader(os.path.dirname(__file__))

しかし、私は jinja2 で App Engine をうまく使用しているので、お手伝いできると思います。デフォルトでは、jinja2 はプロジェクトのルートにある「templates」という名前のディレクトリを探します。したがって、header.html の場合、jinja2 はそのファイルが「templates/base/header.html」にあると想定します。

get_template 関数が jinja2 用である environment.py を見ると、

    If the template does not exist a :exc:`TemplateNotFound` exception is
    raised.

アプリ エンジン プロジェクトのルートにテンプレート ディレクトリを作成し、すべての jinja2 テンプレートをそこに移動して、問題が解決するかどうかをお知らせください。テンプレート名を jinja2 に渡すと、それらはすべてフォルダーに対して相対的になるため、呼び出しは次のようになります

template = JINJA_ENVIRONMENT.get_template('index.html')

index.html はルートの /templates/index.html にあります。

もしそうなら、辞書を渡してjinja2のデフォルト設定をカスタマイズする方法を教えてください。

于 2013-09-23T14:52:40.127 に答える