我已经看到了足够多的例子,允许我在模板中声明一个新变量并设置其值。但是我想做的是更新模板中特定变量的值。
例如,我有一个对象的日期时间字段,我想根据模板中的request.user
添加时区。所以我将创建一个像{% add_timezone object.created %}
这样的template filter
,它将做的是它将时区添加到object.created
之后,每当我访问{{object.created}}
时,它都会给我更新的值。
谁能告诉我这是怎么做到的。我知道我需要从模板过滤器更新context
变量。但不知道怎么做。
您不能修改模板中的值,但可以使用 {% with %}
标记定义"scope"变量:
{% with created=object.created|add_timezone %}
Date created with fixed timezone: {{ created }}
{% endwith %}
其中add_timezone
是一个简单的过滤器:
def add_timezone(value):
adjusted_tz = ...
return adjusted_tz
register.filter('add_timezone', add_timezone)