如何将参数传递给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?