2

これが私のコードだとしましょう:

from jinja2 import Environment, PackageLoader

def render(path, **kwargs):
  env = Environment()
  env.loader = PackageLoader('lemma.app.views', '')
  template = env.get_template(path)

  return str(template.render(**kwargs))

そしてそれは私のテンプレートです:

{% extends "layouts/application.html" %}

{% block content %}
  bla
{% endblock %}

テンプレートではなくコードでレイアウトを設定する方法はありますか、それとも{% extends "layouts/application.html" %}馬鹿のようにすべてのテンプレートに書き込む必要がありますか?

4

2 に答える 2

0

子テンプレートの extends で変数を使用できます: {% extends layout %}。これにより、ベース/レイアウト テンプレートの変更が容易になり、別のベース/レイアウト テンプレートを選択できるようになります。同じ子のレイアウト テンプレートが異なるため、extends 変数を使用します。子テンプレートは、Web ページの一部または fancybox iframe の一部です。

于 2012-11-07T23:36:13.037 に答える
0

LemmaLoader最後に、から継承したクラスを定義しPackageLoader、メソッドをオーバーライドしget_sourceました。

于 2013-02-21T05:03:21.790 に答える