0

Jinja2 テンプレート エンジンは初めてです。Zend Framework のビュー ヘルパーのようなものはありますか? 簡単な関数を作成して、すべてのテンプレート ファイルで再利用できますか?

このようなもの?

#somewhere in my python code:
def nice_demo_function(message):
    """"return a simple message"""
    return message

だから私はそれを使うことができます:

<!-- now in my template-file -->
{%  nice_demo_function('yes, this works great!') %}
4

2 に答える 2

3

ヘルパー関数をテンプレートに公開するには、いくつかの方法があります。マクロを使用してそれらを定義し、それらを使用するテンプレートにインポートできます。関数をTemplate オブジェクトのglobals 属性に追加するか、それらをrender()メソッドに渡すことができます。Template をサブクラス化して、毎回繰り返すことなく同じことを行うことができます。もしあなたが本当に凝りたいなら、拡張機能を書くことも検討することができます(しかし、おそらくそこまで深くする必要はありません)。

于 2010-07-11T17:28:06.323 に答える
2

ある時点で、Jinja2環境が作成されます。環境には、名前を関数にマップするdictであるfiltersと呼ばれる属性があります。だからあなたがしたいことは:

def my_helper(value):
  return "-~*#--- %s ---#*~-" % value

env = Jinja2.Environment(...)
env.filters['my_helper'] = my_helper

これで、テンプレートで次のことができます。

<p>The winner is {{ winner | my_helper }}</p>

そして、この場合は変数の値を使用して関数が呼び出されますwinner。Pylonsを使用している場合、これはすべてで発生しconfig/environment.pyます。

于 2010-07-12T00:00:20.857 に答える