0

我有一个字符串需要传递给 django 模板过滤器。但仅是字符串,没有涉及 django 模型,我认为这就是导致问题的原因。

var pk = "123";
var age = "{{ pk|pk_into_age }}";

在我的 django 模板过滤器代码中:

def pk_into_age(pk):
    timestamp = Model.objects.get(pk=int(pk)).timestamp
    return humanizeTimeDiff(timestamp) // Ex: "5 hours ago"
return timestamp

但是这不起作用,错误是“pk”值只是一个空字符串“”,事实并非如此,它没有从上面抓取 pk 字符串文字。

谢谢帮忙

4

2 回答 2

1

您以错误的方式调用模板过滤器。请参见下文:您不能将 javascript 变量传递给模板过滤器,而是从上下文传递变量。

<script>
    var age = "{{ pk|pk_into_age }}";
</script>

假设pk变量存在于上下文中。或者将 pk 值硬编码为:

var age = "{{ '123'|pk_into_age }}";
于 2012-12-29T20:40:09.220 回答
0

您不能在模板过滤器中使用 javascript 变量,因为 javascript 在客户端运行,而模板是在服务器端生成的。

据我所知,没有办法绕过这个问题,而无需再次与服务器通信。

因此,要将 javascript 变量传递给模板过滤器,例如,您可以使用 ajax 请求。编写额外的视图,它处理给定的 pk 并返回一个纯模板,没有 html 标题,只包含您需要的数据。

或者...如果您不需要与用户沟通来获取“新闻”对象,只需在视图中检索 news.age。

于 2012-12-29T23:55:33.537 回答