8

jinja2 に非常に単純なフィルターを追加する必要があります。基本的に、数字を取り、それが正の場合は「+」を追加します。カスタムフィルターを追加する方法についてjinja2のドキュメントに従いましたが、(GAEでは)機能しないようです。

パイソン:

def str_votes(votes):
    if votes > 0:
        return '+' + str(votes)
    else:
        return str(votes)

# jinja2 stuff
template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir),
                               autoescape=True)
jinja_env.globals['str_votes'] = str_votes

HTML (レンダリングされたページ用):

<div>{{ 123|str_votes }}</div>

これにより、次のエラーが表示されます。TemplateAssertionError: no filter named 'str_votes'

これを修正するにはどうすればよいですか? (ここに同様の質問がありましたが、回答はありませんでした。)

4

2 に答える 2

9

フィルターを登録する必要があります。何かのようなもの:

jinja_env.filters['str_votes'] = str_votes
于 2012-09-17T17:31:04.533 に答える
2

グローバルに登録することで、同様のことを行いました:

    def jinja2(self):
       j.environment.globals['humanize_time']= humanize_time
       return j

次に、次のようにテンプレートに渡したいデータを使用して呼び出します。

{{ humanize_time(f.last_post_time) }}
于 2012-09-17T17:42:44.773 に答える