2012-06-15 2 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을 요청하지만되었습니다 혼란스러운 답변을 찾을 수 있습니다.)

답변 편집 :

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 블록을 호출하고 업데이트 작업을 수행하는 것입니다 (업데이트는 파이썬에서 임의의 dict의 메서드 인 http://docs.python.org/library/stdtypes.html#dict.update입니다).

+0

업데이트 부분이 있습니다 (실제로 {{}} 태그에서 수행 중이지만 없음을 인쇄합니다). {% do %} 블록을 어떻게 사용합니까? 코드를 많이 주시면 감사하겠습니다. 피라미드에서 jinja2 확장 기능을 활성화하는 방법 – RedBaron

+1

스크래치 ... 그걸 할 수 있었다. – RedBaron