栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python循环遍历多值QuerySet类型问题的处理心得——嵌套字典

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python循环遍历多值QuerySet类型问题的处理心得——嵌套字典

搜索引擎需要查询到数据库中符合条件的所有网页并一一显示,前边介绍了单条语句的查询与显示,实战中需要将多条并列信息传入模板,列表肯定是不够的,这就考虑到了字典。

list = page.object_list

dict = {}#便于模板循环显示数据
#将返回字典加list字母为值,下标数字为键加入dict字典,
for i in range(0,len(list)):
    dict['list'+str(i)] = list[i]
#将数据行数count加入字典,便于模板遍历
return render(request,'XunLu_details/index.html',{'dict':dict,'count':count,'paginator':paginator,'page':page})

其中list是经由Paginator处理后需要在当前页上显示的所有内容(列表类型,但其中的值为相应的数据表类),我们生成一个字典dict,并向其加入len(list)个key值(list0,list1,list2......)

然后将字典与其他参数一并拼接为render字典中传入(也可用locals(),但不利于可读性),这样在模板层中就变成了循环显示嵌套字典中的值的问题(还要有可分离性,因为不同的字段要做不同处理,比如加粗,链接等)。

    共找到{{count}}个网页 返回首页
{%for list,value in dict.items %} {value.url}}">{{value.title}} {{value.info}} {%empty%} 好像没有找到您想要的东西呢,换个关键词试试吧 {%endfor%}

render字典中的值可以用{{}}来调用,获取到第一层字典,如{{count}};然后可以继续用字典中的items方法进行第二层调用,获取到key与对应的value值,此时的value值是单个数据表类,定义如下:

class Message(models.Model):
    #设置对应的表名
    class Meta:
        db_table = 'datatables'
    def __str__(self):
        return '%s|%s|%s|%s'%(self.id,self.title,self.url,self.info)
    id = models.AutoField(primary_key=True,null=False)
    title = models.CharField('标题',max_length=100,null=False)
    url = models.CharField('网址链接',max_length=300,null=False)
    info = models.CharField('详细信息',max_length=300)
    keyPerson = models.CharField('关键人物',max_length=20,null=False,default='谷爱凌')

故可以用显示类属性的方法显示其内容,如{{value.info}},同时也实现了格式分离,可以针对每一个类属性单独地增加样式。

参考:

Need 2 values to unpack in for loop;https://blog.csdn.net/neve_give_up_dan/article/details/116238351django 模板遍历嵌套字典问题https://blog.csdn.net/sky0Lan/article/details/112276924

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号