9

jinja2 テンプレートに辞書を渡すとします。
ビューでは、次のようなものがあります

d = {}
#set other template stuff into d
get_params['cri'] = 'time'
get_params['order'] = 'asc'
d['get_params'] = get_params
return d

テンプレートでは、get_params のキーの値を変更する必要があります。論理的なこと

{% set get_params.cri='src' %}

エラーで失敗する

TemplateSyntaxError: expected token '=', got '.'

私の質問は、jinja2 の辞書に渡された値を変更する方法です。

(この質問はここで尋ねられましたが、答えがわかりにくく、マージ部分のみに答えています)

回答編集:

Jinja2 は「do」拡張機能を提供します。その拡張機能をピラミッドに追加するには、__init__.pyファイルで次の操作を行います

#This line is alreadythere
config.include('pyramid_jinja2')
#Add this line
config.add_jinja2_extension('jinja2.ext.do')

テンプレートでは

{% do get_params.update({'cri':'src'}) %}
4

1 に答える 1

5

jinja2では割り当てを実行できないという考え方です。ただし、(リンクした他の投稿で提案されているように)実行できることは、doブロックを呼び出して更新操作を実行することです(更新はPythonの任意のdictのメソッドです; http://docs.python.org/library/ stdtypes.html#dict.update)。

于 2012-06-15T10:03:00.123 に答える