Django怎样遍历字典?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django怎样遍历字典?相关的知识,希望对你有一定的参考价值。

想弄个页面用来访问自己的数据库,输出一张表的所有内容,包括表头和内容用表格显示出来;我将表头先查出来,作为列表传入摸板中,将内容用字典组成的列表传入摸板中,但是遍历字典时,怎样才能按表头的顺序显示字段值呢?
<html lang='zh_cn'>
<head>
<meta charset='utf-8'>
<title>第四章:摸板</title>
</head>

<body>
% for row in rows %
% if forloop.first %
<table border="1">
<tr>
% for field in fields %
<td> field </td>
% endfor %
</tr>
% endif %
<tr>
% for key, value in row.items %
<td> value </td>
% endfor %
</tr>
% if forloop.last %
</table>
% endif %
% empty %
<p> table not exists or has no data </p>
% endfor %
</body>

</html>
以上是我的摸板,但是这个方法不能解决乱序问题,跟表头对不上号,跪求大神帮忙支招

参考技术A 不评价你的解决方案。你的模板比我还熟悉。 只是我感觉,你可能走了弯路。

模块只是用来处理一些简单的循环的。并不足以做复杂的算法。那是python最擅长的。

所以你在python里加工一下。形成似乎列表的结构。然后象“打印机”一样,直接在模板里顺序打出来就可以了。

所谓MVC,并不是说所有的视图都是让模板完成,所有的数据逻辑都是MODEL来完成。实际上现实工程里,比MVC的逻辑要复杂,更多层。 没有必要将这个通用化复杂化。 很多时候,ALL-IN-ONE。

所有的东西都有VIEWER里简单完成,这样的代码可读性,可维护性更好。这就达到软件工程的目标了。本回答被提问者采纳
参考技术B for k,v in dict:
其中k是字典的key,v是字典的value。
或者
for k in dict :
v = dict[k]
k是字典的key,v是字典的value。

如何遍历 Django 字典中的外键?

【中文标题】如何遍历 Django 字典中的外键?【英文标题】:How can I iterate over foreign keys in a Django dictionary? 【发布时间】:2015-04-16 11:11:02 【问题描述】:

我对编程很陌生,并且有一个关于在我的 Django 视图文件中迭代外键的问题。

models.py

class Site(models.Model):
    other fields.......
    sensor = models.ForeignKey("Sensor", blank=True, null=True)
    slug = models.SlugField(unique=True)

views.py

def site(request, site_name_slug):

    context_dict = 

    empty_field = "<font color='LightGray'>No Data</font>"


    try:
        site = Site.objects.values().get(slug=site_name_slug)
        context_dict['site_slug'] = site_name_slug

        for key, value in site.iteritems():
            if value:
                context_dict[key] = value
            else:
                context_dict[key] = empty_field

可以添加这样的东西吗?

for key, value in (site.sensor).iteritems():
    if value:
        context_dict['sensor_%s' % key] = value
    else:
        context_dict['sensor_%s' % key] = value

这样我就不必对传感器对象中的每个字段都使用 if/else 或 try/except。

【问题讨论】:

Iterating over model attributes when creating a template in Django 的可能重复项 【参考方案1】:

不,ForeignKeys 提供一对多关系。

在您的模型中,给定的Site 将只有最多一个 传感器。没有什么可以迭代的,所以你问的没有意义。


不需要专门遍历所有sensors 字段来访问模板中的它们,如果您将页面site 传递到模板中,例如current_site,您可以访问传感器,如所以:

 current_site.sensor 

要访问传感器字段(例如,如果传感器有一个名为“值”的字段),只需附加该字段,如下所示:

 current_site.sensor.value 

【讨论】:

是否可以从与站点对象关联的传感器对象创建另一个字典并对其进行迭代? @Murphysboro 你不应该需要,除非我遗漏了什么,只需使用点符号来访问 sensor 本身的部分。 我想检查传感器中的每个字段,看看它们是否包含一个值,就像我对上面示例中的站点字段所做的那样。 点符号很酷,虽然我不知道我能做到这一点。 没问题,如果这有助于随时投票或接受,让未来的访客知道您找到了问题的答案。

以上是关于Django怎样遍历字典?的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历 Django 模板中的字典?

循环遍历 Django 模板中的嵌套字典

如何在 Django 模板中多次遍历同一个字典?

Django模板遍历字典的方法

如何遍历 Django 字典中的外键?

如何遍历 django 模板中的嵌套字典