变量后面的django模板中有两个或多个点

时间:2011-09-22 02:50:56

标签: python django django-templates

在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>](名称是模型的名称)

基本上,该方法在循环之外工作。这有什么理由吗?

3 个答案:

答案 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']]
傻傻的我!非常感谢您的所有投入