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.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}},同时也实现了格式分离,可以针对每一个类属性单独地增加样式。

参考:

Original: https://blog.csdn.net/Mr_Joer/article/details/124316168
Author: Mr_Joer
Title: Python循环遍历多值QuerySet类型问题的处理心得——嵌套字典

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/733574/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球