我有一个需要传递到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字符串文字。
谢谢你的帮助
答案 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即可。