如何将参数传递给Django中模板变量的方法?

Posted

技术标签:

【中文标题】如何将参数传递给Django中模板变量的方法?【英文标题】:How to pass an argument to a method on a template variable in Django? 【发布时间】:2010-11-27 23:57:21 【问题描述】:

我正在使用 lxml 库在视图中定义一个变量(类别)。 lxml 提供了一个方法.get 来检索自定义属性。我想像这样在模板中使用它:

 category.get("foo")  

我知道使用模板变量时不需要使用括号,但我收到以下错误:

 category.get "foo" 

无法解析余数:来自 'category.get "foo"' 的 '"foo"'

我假设我的语法有问题,但谷歌没有帮助。 django 文档说使用. 查找方法

【问题讨论】:

在 Django 模板过滤器中使用的语法是“:”作为参数,所以我想如果有人要实现这个,它会是 category.get:foo 。但是,它不存在。也许你应该添加它? How to call function that takes an argument in a Django template?的可能重复 【参考方案1】:

我同意将逻辑与设计分离的理念,但有一个例外。我目前正在为模型编写 get_image(height=xxx, width=xxx) 方法。显然,最后阶段应该由模板设计者决定图像的大小。虽然我认为正确的做法是编写自定义标签,但为什么要限制呢?

【讨论】:

完全正确。这不是“答案”,更像是评论,而是 +1【参考方案2】:

这里我写了一个 hack 来调用一个函数并传递参数 http://www.sprklab.com/notes/13-passing-arguments-to-functions-in-django-template/

【讨论】:

这看起来有点像混合代码和内容,几乎和 php 一样。你怎么看?【参考方案3】:

您不能将参数传递给这样的可调用属性。要么拉取视图中的值,要么编写自定义模板标签来执行此操作。

【讨论】:

有什么方法可以访问其他变量,例如当前请求(即 request.user)或当前上下文对象? 你可以在自定义模板标签中

以上是关于如何将参数传递给Django中模板变量的方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用django模板将参数传递给页面上的Javascript代码?

如何将三个或多个参数传递给自定义模板标签过滤器 django?

django 将参数传递给模板标签中的函数

将命名参数传递给 Django 模板中的函数

是否可以将查询参数传递给 Django % url % 模板标签?

Django:将参数传递给父模板