2012-07-04 84 views
2

我已经看到了足够多的示例,允许我在模板中声明新变量并设置其值。但我想要做的是更新模板内某个特定变量的值。更新模板中变量的值 - django

例如我有一个对象的日期时间字段,我想根据模板中的request.user添加时区。因此,我将创建一个template filter,如{% add_timezone object.created %},它将执行的操作是它会将时区添加到object.created之后,每当我访问{{object.created}}时,它会给我更新的值。

有人可以告诉我这是怎么做到的。我知道我需要更新模板过滤器中的context变量。但不知道如何。

+1

你尝试过什么至今?这是stackoverflow,而不是doalltheworkforme.com。 –

+0

这样的逻辑真的不应该在模板中,你知道。为什么你不能在视图中这样做? –

+0

我不想在视图中这样做,因为查询集中可能有日期字段,然后我必须更改查询集本身的属性。使用这个模板标签,我可以使它非常通用 – Sachin

回答

2

你不能在模板修改的值,但是你可以定义使用{% with %}标签“范围”变量:

{% 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) 
+0

谢谢,似乎足够的解决方案,但是这是一个问题。如果有多个这样的对象,我将不得不使用'with'标签 – Sachin

+0

您当然可以修改模板中的值,您只需为此编写一个自定义模板标签即可。 –

+0

@brunodesthuilliers然后你会修改它的模板... – Tisho