如何将原始字符串或整数传递到django模板过滤器?

时间:2012-12-29 20:35:52

标签: python django

我有一个需要传递到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字符串文字。

谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

您正在以错误的方式调用模板过滤器。请看下面: 您无法将javascript变量传递给模板过滤器,从上下文传递变量。

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

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

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

答案 1 :(得分:0)

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

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

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

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