2012-06-15 12 views
8

jinja2テンプレートに辞書を渡すとします。私はget_paramsのキーの値を変更する必要があるテンプレートではjinja2の辞書属性を変更する

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

のようなものを持っているビューで
。論理的なもの

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

はエラーで失敗し

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

私の質問は、私はJinja2の辞書に渡された値を変更しない方法です

(この質問はhereを尋ねたが、私されています答えを混乱させるだけで、合併部分にのみ答える)

回答EDIT:

Jinja2は 'do'拡張を提供します。ピラミッドにその拡張子を追加するには、アイデアはあなたがJinja2の中で割り当てを行うことができないということであるテンプレート

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

答えて

4

__init__.pyファイル

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

で次の操作を行います。しかし、(あなたがリンクした他の投稿に示唆されているように)doブロックを呼び出して更新操作を実行することができます(更新はpythonの任意のdictのメソッドです; http://docs.python.org/library/stdtypes.html#dict.update)。

+0

私は更新部分を得ました(実際には{{}}タグで行っていますが、それはNoneを出力します)。どのように{%do%}ブロックを使用するのですか?コードは非常に高く評価されます。具体的にどのようにピラミッドからjinja2の拡張機能を有効にする – RedBaron

+1

そのスクラッチ...それをやって管理 – RedBaron

関連する問題