2012-06-15 15 views
8

Załóżmy, że przekazuję słownik do mojego szablonu jinja2.
W widoku mam coś podobnegoModyfikowanie atrybutów słownika w jinja2

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

w szablonie muszę zmienić wartości kluczy get_params. Logiczną rzeczą

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

nie powiedzie się z powodu błędu

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

Moje pytanie brzmi jak mogę zmodyfikować wartości przekazywane do słownika w jinja2

(To pytanie zostało zadane here, ale odpowiedź jest myląca i odpowiada tylko na łączącą się część)

Odpowiedź EDYCJA:

Jinja2 udostępnia rozszerzenie "do". Dodać, że rozszerzenie do piramidy, wykonaj następujące czynności w pliku

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

__init__.py W szablonie

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

Odpowiedz

4

Chodzi o to, że nie można wykonać zadania w jinja2. To, co możesz zrobić (zgodnie z sugestią w drugim wpisie, który łączysz), to wywołanie bloku do i wykonanie operacji aktualizacji (aktualizacja to metoda dowolnego dict w python; http://docs.python.org/library/stdtypes.html#dict.update).

+0

Mam część aktualizacji (aktualnie robię to teraz w tagach {{}}, ale to drukuje Brak). Jak korzystać z bloku {% do%}. Kod będzie bardzo doceniany. Espicial jak włączyć rozszerzenia jinja2 z piramidy – RedBaron

+1

Scratch that ... udało się to zrobić – RedBaron