Python服务器运维笔记:第三章电商实战 - 3.1.2.多级分类

前言:本文是学习网易微专业的《python全栈工程师》 中的《服务器运维开发工程师》专题的课程笔记,欢迎学习交流。同时感谢老师们的精彩传授!

一、课程目标

  • 多级分类结构
  • 自关联模型
  • 多级菜单生成

二、详情解读

2.1.多级分类结构

在这里插入图片描述

2.2.自关联模型

表结构:

字段名 说明
cate_id 分类ID
parent_id 父级ID
cate_name 分类名称

表数据:
在这里插入图片描述
父级关系:

parent = db.relationship('Goodscategory', back_populates="sub_cates", remote_site=[id])

子级关系:

sub_cates = db.relationship('GoodsCategory', back_populates="parent", cascade='all, delete-orphpan', order_by=order_id)

外键约束性问题:
当使用mysqlinnodb引擎的时候,由于外键约束完整性,会导致添加第一层级的类别
失败:没有id=0的分类
解决办法:将第一级的分类的父类idnull就可以了

最后的数据表应该是如下的:
在这里插入图片描述

2.2.多级菜单生成

多级菜单 不能通过FlaskForm来直接定义,而是生成树状数据,可以缓存,然后前端根据数据结构生成前端列表,由js创建选择列表
在这里插入图片描述

function createSelect(data){
    var category_select = $("#category_select")
    var select = document.createElement("select")
    select.options.add(new Option("请选择所属类别", 0))
    for (option in data){
        select.options.add(new Option(data[option][0], data[option][1]))
    }

    select.options[0].selected = true
    select.className="form-control"
    select.onchange=function(){
        parent_id = this.options[this.selectedIndex].value
        $(this).next().remove()
        load_cate(parent_id)
    }
    category_select.append(select)
}

function load_cate(parent_id=0) {
	$.ajax({
		url: category_url + "?parent_id=" + parent_id,
		method: "get",
		success: function (data) {
			if (data.length > 0) {
				createSelect(data)
			}
		}
	})
}
2.2.1.开发任务

设计一个多级地区管理模型:
在这里插入图片描述
实现后台的添加管理、在技术文档中增加地区模型字段说明,格式可以参考会员模型
在这里插入图片描述

三、课程小结

  • 01 多级菜单
  • 02 多级菜单数据结构
  • 03 多级菜单模型
  • 04 前端动态菜单
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章