开源web框架django知识总结(十八)
商品详情页
商品详情页分析和准备
1. 商品详情页组成结构分析
1.商品频道分类
- 封装在
goods.utils.py
文件中,直接调用方法即可。
from .models import GoodsCategory,GoodsChannel,SKUSpecification,SKU,SPUSpecification,SpecificationOption
from copy import deepcopy
def get_categories():
# 模版参数categories是首页分类频道
categories = {
}
# 获取首页所有的分类频道数据
channels = GoodsChannel.objects.order_by(
'group_id',
'sequence'
)
# 遍历所有是分类频道,构建以组号作为key的键值对
for channel in channels:
# channel: GoodsChannel对象
if channel.group_id not in categories:
categories[channel.group_id] = {
'channels': [], # 当前分组中的分类频道(一级分类)
'sub_cats': [] # 二级分类
}
# (1)、填充当前组中的一级分类
cat1 = channel.category
categories[channel.group_id]['channels'].append({
'id': cat1.id,
'name': cat1.name,
'url': channel.url
})
# (2)、填充当前组中的二级分类
cat2s = GoodsCategory.objects.filter(parent=cat1)
for cat2 in cat2s:
# cat2:二级分类对象
cat3_list = [] # 每一次遍历到一个二级分类对象的时候,初始化一个空列表,用来构建三级分类
cat3s = GoodsCategory.objects.filter(parent=cat2)
# (3)、填充当前组中的三级分类
for cat3 in cat3s:
# cat3;三级分类对象
cat3_list.append({
'id': cat3.id,
'name': cat3.name
})
categories[channel.group_id]['sub_cats'].append({
'id': cat2.