Django模板标签循环字典变量

时间:2015-08-31 07:20:10

标签: python django

我已经阅读了关于密钥中循环变量的所有模板标签帖子。显然Django不支持键中的循环变量,我不知道如何使用自定义模板标记。

我想显示这样的内容,但是如何通过{%for i in mData%}循环来实现这一点?

{{ mData.0.name }}
{{ mData.1.name }}
{{ mData.2.name }}

{{ mData.0.age }}
{{ mData.1.age }}
{{ mData.2.age }}

mData是字典列表。

mData = {" name":" alex"," age":" 12"},{" name&# 34;:" amy","年龄":" 14"} ...

4 个答案:

答案 0 :(得分:2)

考虑您的数据位于字典列表中,例如:

my_data = [{"name" : "abc" , "age":20,...}, {} , {}...]

您可以通过以下方式访问模板中每个字典的所有属性:

{% for dict in my_data %}
<!-- Here dict would be each of the dictionary in my_data -->
<!-- You can access elements of dict using dot syntax, dict.property -->
   {{ dict.name }}, {{ dict.age }}, ... {{ dict.property }}
{% endfor %}

参考链接:Django templating language

如果您想按照指定的顺序构建元素,可以执行以下操作:

Name List:
{% for dict in my_data %}
my_data.name
{% endfor %}

Age List:
{% for dict in my_data %}
my_data.age
{% endfor %}

...
Prpoerty List:
{% for dict in my_data %}
my_data.property
{% endfor %}

答案 1 :(得分:1)

Django模板标签有意非常轻量级,因此您不必将太多代码放入模板本身。如果你需要做一些复杂的事情,比如循环数据库中的每个其他条目,你应该在views.py而不是模板中进行设置。

对于您描述的场景,您需要做的就是遍历对象列表:

{% for data in datas %}
    {{ data.name }}
{% endfor %}
{% for data in datas %}
    {{ data.age }}
{% endfor %}

答案 2 :(得分:1)

这解决了我的问题

{% for d in mData %}
{{ d.name }} {{ d.age }}
{% endfor %}

答案 3 :(得分:0)

{% for k, v in mData.items %}
    {{ k }} {{ v }}

顺便说一下,PEP8建议我们将变量命名为lower + _,但不要像javascript或其他语言那样驼背。