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 前端動態菜單
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章