修改jinja2中的字典属性

时间:2012-06-15 09:21:04

标签: python dictionary pyramid jinja2

假设我将字典传递给我的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

中字典的值

(这个问题已被问到here,但我发现答案令人困惑,只能回答合并部分。

回答编辑:

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'}) %}

1 个答案:

答案 0 :(得分:5)

这个想法是你无法在jinja2中执行任务。但是你可以做什么(正如你链接的另一篇文章所建议的那样)是调用do块并执行更新操作(update是python中任何dict的方法; http://docs.python.org/library/stdtypes.html#dict.update)。