更新模板内变量的值 - django
Posted
技术标签:
【中文标题】更新模板内变量的值 - django【英文标题】:update value of a variable inside a template - django 【发布时间】:2012-07-04 16:58:07 【问题描述】:我已经看到了足够多的示例,这些示例允许我在模板中声明一个新变量并设置它的值。但我想做的是更新模板中特定变量的值。
例如,我有一个对象的日期时间字段,我想根据模板中的request.user
添加时区。所以我将创建一个template filter
就像% add_timezone object.created %
一样,它会为object.created
添加时区,之后每当我访问object.created
时,它都会给我更新的值。
谁能告诉我如何做到这一点。我知道我需要从模板过滤器更新 context
变量。但是不知道怎么弄。
【问题讨论】:
到目前为止你尝试过什么?这是 ***,而不是 doalltheworkforme.com。 这样的逻辑真的不应该在模板中,你知道的。为什么不能在视图中执行此操作? 我不想在视图中这样做,因为查询集中可能有日期字段,然后我将不得不更改查询集中本身的属性。使用这个模板标签,我可以让它非常通用 【参考方案1】:您不能修改模板中的值,但可以使用% 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)
【讨论】:
谢谢,这似乎是一个不错的解决方案,但有一个问题。如果有多个这样的对象,我将不得不使用很多with
标签
你当然可以修改模板中的值,你只需要为此编写一个自定义的模板标签。
@Tisho Aha,这是一个有趣的区别。如果模板标签和过滤器“超出模板”,那么这里就没有太多事情发生了 以上是关于更新模板内变量的值 - django的主要内容,如果未能解决你的问题,请参考以下文章
我将如何在 Django 模板标签中使用模板上下文变量的值? [复制]