• django 中间件的一些基本操作


    9-27 首页,列表页相同部分处理

     

    因为首页和商品各列表页具有相同的部分,每写一个列表页就要写一次代码吗,是不是有简单的办法呢?

    1.我们来看下实现这种功能需要用到的代码

     1 def getMenu(request):#括号中的request不能删掉
     2     #把需要用到的表引用进来
     3     from shop.models import Floor,Classify
     4     #res是获取下方商品显示的楼层信息,通过外键进行查找和反向查找来显示商品信息
     5     res = Floor.objects.filter()
     6     #classify是获取上级id为0的第一级的信息,实现显示导航栏和一级分类
     7     classify = Classify.objects.filter(parent_id=0)
     8     #存储数据
     9     all_data = []
    10     #显示一级分类下相关联的二级分类
    11     for one_data in classify:
    12         #获取二级分类数据
    13         two_list = Classify.objects.filter(parent_id=one_data.id)
    14         #存储二级分类的所有数据
    15         two_lis = []
    16         #对二级分类进行遍历,获取三级分类数据
    17         for two_data in two_list:
    18             #定义字典,存储二级分类的id,name,以及三级分类的数据(列表)
    19             temp = {}
    20             #获取二级分类ID
    21             temp['id'] = two_data.id
    22             #获取二级分类name
    23             temp['name'] = two_data.name
    24             #获取三级数据
    25             three_data = Classify.objects.filter(parent_id=two_data.id)
    26             #将三级数据存放到列表中
    27             temp['list'] = three_data
    28             #将二级分类放入字典
    29             two_lis.append(temp)
    30         #将字典添加到数组中
    31         all_data.append(two_lis)
    32     return {'res': res, 'classify': classify, 'all_data': all_data}
    33 
    34 # for two_list in list:
    35     #       two_list.id two.list.name
    36     #     for three_list in two_list.list:
    37     #          three_list.id three_list.name
    38     # 循环 types_list 取每一个分类的二级和三级
    39 
    40     # [
    41     #   [ {id:34,name:'电视',list:[三级的数据]},{id:35,name:'空调',list:[三级的数据]},.... ],
    42     #   [ {id:34,name:'手机通讯',list:[三级的数据]},{id:35,name:'运营商',list:[三级的数据]},..... ],
    43     #    .......
    44     # ]
    View Code

    2,在项目同名app下添加一个context_processor.py  的文件,将步骤1中的代码复制到此文件中

    3,使用上下文处理器来完成这种功能,在setting.py 中添加myshop下的context_processor下的getMenu 函数

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')]
            ,
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                    'myshop.context_processor.getMenu',
                ],
            },
        },
    ]

    实现首页,列表页相同部分   完成这些操作就可以在各页面中调用了,无需再重复设置 

  • 相关阅读:
    定位的原理
    UE4 开发三维GIS 一 场景光影
    UE4 开发三维GIS
    hive
    atlas
    开源AI药物发现TorchDrug安装测试的那些坑
    使用Docker快速搭建zabbix 5
    Docker简易部署
    简单的批量telnet 测试
    ASP.NET Core 中间件
  • 原文地址:https://www.cnblogs.com/zxg-1997/p/9715681.html
Copyright © 2020-2023  润新知