【问题标题】:Why can't iterate through this list in a Django template为什么不能在 Django 模板中遍历这个列表
【发布时间】:2011-10-10 21:09:41
【问题描述】:

从我的角度来看,我有一个变量,它是对该模型的 Model.objects.all() 调用的输出。我在我的视图中将它传递给我的模板,并且我试图在模板中对其进行迭代。我可以简单地通过这行代码访问它的第一个元素。 'code' 是我的 django 模型中一个字段的名称。此行确实正确打印了第一个元素的“代码”属性。

{{ var_name.0.code }}

但是,当我尝试在模板 for 循环中迭代 var_name 时,没有任何显示。我尝试了以下代码:

{% for single_var in var_name %}
    {{ single_var.code }}
{% endfor %}

这实际上不是我想在 for 循环中做的,但让它工作会让我在模板中做我需要的事情。值得注意的是,目前该列表中只有一个元素。

这是一个工作项目,所以我将变量名称更改为通用名称。

【问题讨论】:

  • 您能说明您是如何定义列表并将其传递给模板的吗?
  • print 'var_name' 是否打印对象列表?同样,在每次迭代中仅打印“single_var”是否会打印对象引用?
  • var_name 是通过调用 ModelName.objects.all() 声明的。打印出 var_name 显示 []。我在视图和模板中打印了 var_name,在浏览器和控制台中 runserver 的输出中打印出相同的内容。

标签: python django templates


【解决方案1】:

我发现将 single_var 的名称更改为不带下划线的名称似乎可以解决问题。这对我来说没有多大意义,因为Django template language documentation 声明如下:

Variable names consist of any combination of alphanumeric characters and the underscore ("_").

有谁知道为什么这似乎可以解决问题?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 2012-09-27
    相关资源
    最近更新 更多