Supponiamo di passare un dizionario al mio modello jinja2.
Nella vista ho qualcosa di simileModifica attributi dizionario in jinja2
d = {}
#set other template stuff into d
get_params['cri'] = 'time'
get_params['order'] = 'asc'
d['get_params'] = get_params
return d
Nel modello ho bisogno di cambiare il valore di chiavi di get_params. La cosa più logica
{% set get_params.cri='src' %}
non riesce con un errore
TemplateSyntaxError: expected token '=', got '.'
La mia domanda è come faccio a modificare i valori passati a un dizionario in Jinja2
(Questa domanda è stato chiesto here, ma io trova la risposta confusa e risponde solo alla parte risultante dalla fusione)
Risposta MODIFICA:
Jinja2 fornisce l'estensione "do". Per aggiungere che l'estensione a piramide, effettuare le seguenti operazioni nel file di __init__.py
#This line is alreadythere
config.include('pyramid_jinja2')
#Add this line
config.add_jinja2_extension('jinja2.ext.do')
Nel modello
{% do get_params.update({'cri':'src'}) %}
Ho ottenuto la parte di aggiornamento (in realtà lo faccio ora nei tag {{}} ma che stampa Nessuno). Come utilizzo un blocco {% do%}. Il codice sarà molto apprezzato. Esplicitamente come abilitare le estensioni jinja2 dalla piramide – RedBaron
Scratch che ... è riuscito a farlo – RedBaron