在django模板中,是否可以在变量后面有两个(或更多)点?例如,假设我有一个对象列表,我首先要使用列表索引查找,然后一旦我有了对象,我想调用它的方法来获取绝对URL,这应该有用吗?
For example:
{% for entry in myList %}
{{ entry.0.get_absolute_url }}
{% endfor %}
所以0要求列表中的第一个项目是一个对象,然后我想得到绝对的url。当我尝试它时它不起作用但它也没有返回错误。有没有更好的方法来完成我想要做的事情?
澄清一下,奇怪的是:
这有效:
{{ singleObject.get_absolute_url }}
在这种情况下,如果我只是尝试{{ singleObject }}
,我会得到该对象的unicode值,如:John Smith
这不起作用:
{% for object in objectList %}
{{ object.get_absolute_url }}
{% endfor %}
但在这种情况下,如果我输入{{object}},我将不再获得unicode值。我得到:[<Name: John Smith>]
(名称是模型的名称)
基本上,该方法在循环之外工作。这有什么理由吗?
答案 0 :(得分:0)
您正在做的事情在Django模板中完全可以接受。没有更好的方法来完成你想要做的事情。
答案 1 :(得分:0)
绝对可以使用多个点。
根据您的评论,没有entry.0
因为entry
是列表中的第一项,因为您已经在循环浏览`myList&#39;
只需使用entry.get_absolute_url
但如果您只想打印出第一个条目的网址,请放弃for循环并使用myList.0.get_absolute_url
更新:
来自实用程序员的提示&#39;那说:
``select''没有破碎
在操作系统或操作系统中找到错误很少见 编译器,甚至是第三方产品或库。这个bug最多 可能在申请中。
我认为你认为django模板表现得很奇怪,而事实是你没有正确构建你的列表。不要害怕显示您的一些实际代码,通过为我们抽象问题,您删除了包含问题的部分
答案 2 :(得分:0)
我明白了。我的列表中的每个项目都有括号,如下所示:
objectList = [['John Smith'], ['Jim Jones'], ['Bill White']]
傻傻的我!非常感谢您的所有投入