Python程序設計(含視頻分析) 課件 第14章 實戰(zhàn)電商平臺_第1頁
Python程序設計(含視頻分析) 課件 第14章 實戰(zhàn)電商平臺_第2頁
Python程序設計(含視頻分析) 課件 第14章 實戰(zhàn)電商平臺_第3頁
Python程序設計(含視頻分析) 課件 第14章 實戰(zhàn)電商平臺_第4頁
Python程序設計(含視頻分析) 課件 第14章 實戰(zhàn)電商平臺_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python程序設計第14章實戰(zhàn)電商平臺主講教師:單

位:第14章實戰(zhàn)電商平臺14.1Django框架基礎14.2DDD領域驅動設計基礎14.3電商平臺系統(tǒng)架構14.4產商品中心設計與落地14.5交易中心設計與落地14.6訂單中心設計與落單14.7用戶中心設計與落地14.8小結14.1Django框架基礎第14章實戰(zhàn)電商平臺Django的介紹Django并非只是一個名字,它是一種編程理念,一個簡潔高效、嚴謹而充滿智慧的構建網站的工具。Django是一種開源的Web應用框架,由Python語言編寫,旨在幫助程序員以最小的代碼創(chuàng)建功能豐富的Web應用。Django遵循MVC的設計理念,更接近MTV的架構,模型(Model)對應數據庫中的一張表,模板(Template)處理如何呈現數據給用戶。Django的視圖(View)是Python函數,負責響應用戶請求,從模型獲取數據,傳遞給模板,再由模板渲染為HTML。Django的MTV設計模式簡單,但背后蘊含了巨大的智慧和深厚的技術積淀,進一步探討一下Django的一些核心特性。Django的應用Django的智慧Django的積淀Django的目標14.1.1框架概述在處理數據過程中,可以對數據進行驗證和處理,例如過濾、排序、計算等操作。數據驗證和處理一旦URL匹配成功,Django將調用與該URL模式關聯的視圖函數。視圖函數處理14.1.2數據處理邏輯在處理請求的過程中,通常需要與數據庫進行交互。Django使用ORM提供的模型來進行數據庫操作。在視圖函數中,根據業(yè)務邏輯生成相應的數據和內容,構建一個HTTP響應對象,并返回給客戶端。Django的URL調度程序將請求的URL與項目中定義的URL模式進行匹配。當用戶在瀏覽器發(fā)出請求時,該請求被發(fā)送到用Django框架編寫的應用程序。模型操作模板渲染URL匹配用戶請求010203040506一旦響應對象生成,Django將通過HTTP協議將響應發(fā)送回客戶端,客戶端將收到響應并進行相應的處理。響應返回01Django采用MTV設計模式,模型(Model)對應數據庫中的一張表,模板(Template)處理如何呈現數據給用戶。Django的項目結構03Django的模板則處理如何呈現數據給用戶,它們是HTML的骨架,插入Django的模板語言,占位符在運行時被數據替換。模板的運用02在Django中,模型是數據庫的布局,包含了存儲數據的基本字段和數據行為,每個模型都對應數據庫中的一張表。模型的定義14.1.3利用Django框架實現工程化項目14.2DDD領域驅動設計基礎第14章實戰(zhàn)電商平臺DDD是一種設計方法論,旨在通過深入了解業(yè)務領域,將復雜業(yè)務邏輯轉化為簡潔的代碼實現。DDD定義DDD的目標是提高軟件系統(tǒng)的可維護性和可擴展性,同時降低開發(fā)成本和風險。DDD目標DDD的核心要素包括聚合根、實體、值對象、倉儲接口等,這些要素共同構成了DDD的設計基石。DDD核心要素DDD的設計流程包括定義領域模型、設計聚合結構、定義實體和值對象、設計倉儲接口等步驟。DDD設計流程14.2.1DDD設計概述14.2.2電商領域通用設計020301領域抽象是將電商領域的復雜業(yè)務邏輯轉化為簡潔的代碼實現的關鍵步驟。在電商領域設計中,設計師需要運用各種設計模式,如聚合、實體、值對象、倉儲接口等,來提高系統(tǒng)的可維護性和可擴展性。。電商領域具有復雜性、多變性和挑戰(zhàn)性,需要設計師深入了解領域特性,進行領域抽象和設計。電商領域特性領域抽象設計模式14.3電商平臺系統(tǒng)架構第14章實戰(zhàn)電商平臺14.3.1系統(tǒng)概述電商平臺系統(tǒng)架構是一種高度復雜且龐大的系統(tǒng)架構,旨在支持電子商務平臺的運行和管理。電商平臺系統(tǒng)架構概述交易中心是電商平臺的核心處理模塊,負責處理用戶的購買和支付行為。交易中心電商平臺系統(tǒng)架構涵蓋了各種關鍵組件和技術,從前端用戶界面到后端數據管理,以實現安全、可靠、高效的在線購物體驗。關鍵組件與技術訂單中心是電商平臺的關鍵模塊,負責管理用戶的訂單信息、狀態(tài)和處理流程。訂單中心商品中心是電商平臺的核心之一,負責管理商品的展示、分類、搜索和詳情展示等功能。商品中心用戶中心負責管理用戶的注冊、登錄、個人信息和賬戶管理等功能。用戶中心14.3.2整體技術落地方案設計使用Vue.js和Django我們將使用Vue.js作為前端框架,Django作為后端框架,通過組合它們構建一個功能豐富、用戶體驗友好的電商平臺。前后端分離的架構將前端和后端分別獨立開發(fā)并通過API進行通信,這種架構有許多優(yōu)勢,比如開發(fā)團隊可以并行開發(fā),互不干擾。前端部分使用Vue.js來構建用戶界面和實現交互邏輯,Vue.js的組件化開發(fā)讓用戶可以將界面拆分為可復用的組件。前后端分離的架構優(yōu)勢Vue.js組件化開發(fā)14.3.2整體技術落地方案設計14.4產商品中心設計與落地第14章實戰(zhàn)電商平臺產品主圖保存產品主要圖像信息,通常是展示外觀或特點的圖片。產品詳情圖存儲產品詳細圖像信息,多張圖片展示產品各個方面和細節(jié)。產品分類表示產品所屬分類信息,將產品歸類到特定類別或組別中。14.4.1數據模型設計-產品信息(Product)14.4.1數據模型設計-產品信息(Product)描述產品銷售渠道信息,指明產品銷售的途徑。產品渠道記錄產品銷售價格信息,表示當前銷售價格。產品銷售價格存儲產品未折扣或促銷時的原始價格信息。產品原始價格14.4.1數據模型設計-產品信息(Product)產品銷量保存產品銷售量信息,表示產品在一定時間內的銷售數量。產品庫存記錄產品當前庫存信息,表示產品目前的庫存數量。產品狀態(tài)表示產品狀態(tài),如上架、下架等,用于標識產品當前銷售狀態(tài)。010203存儲商品基本信息,包括名稱、描述、圖片、分類、價格等。商品信息模型商品模型需要記錄每個商品的唯一標識符,便于其他模型關聯。唯一標識符14.4.1數據模型設計-產品信息(Product)類別名稱類別名稱字段存儲類別的名稱或標簽,包含識別和描述特定類別的信息。類別圖片類別圖片字段用于存儲與類別相關的圖片,保存了與類別視覺表現或圖標相關的信息。類別編碼類別編碼是用作類別唯一標識符的字段,用于區(qū)分不同的類別并確保每個類別具有獨特標識。14.4.1數據模型設計-產品分類(Category)14.4.1數據模型設計-產品分類(Category)產品分類模型用于表示和組織不同類型或組群的產品,允許根據特定標準或特征進行分類和歸類。模型中的每個類別都有一個唯一標識符,即類別編碼,用于區(qū)分其他類別。類別圖片字段提供了與類別相關的視覺表示,幫助用戶快速識別和關聯該類別。類別名稱字段類別名稱字段提供了描述類別的信息,幫助用戶了解其目的和內容。產品分類模型類別標識符類別圖片字段渠道編碼是用作產品銷售渠道的唯一標識符,用于區(qū)分不同的銷售渠道,并確保每個渠道具有獨特的標識。渠道編碼渠道名稱存儲銷售渠道的名稱,用于描述銷售渠道的名稱信息。而渠道分類表示銷售渠道的分類信息。通過使用產品銷售渠道模型,電商系統(tǒng)可以定義和管理各種產品的銷售渠道,包括不同的線上分銷渠道等。每個銷售渠道都可以通過渠道編碼進行唯一標識,并使用渠道名稱和分類信息提供更多的描述和歸類。系統(tǒng)可以根據銷售渠道對產品的銷售和分發(fā)進行管理和跟蹤,為用戶提供多樣化的購買渠道和更好的購物體驗。渠道名稱銷售渠道模型唯一標識管理和跟蹤14.4.1數據模型設計-產品渠道(Channel)SKU編碼SKU編碼是SKU的唯一標識符,用于區(qū)分不同的SKU。產品編碼產品編碼是SKU所屬的產品的唯一標識符。SKU描述SKU描述包含了SKU的屬性信息,用于描述SKU的具體規(guī)格。14.4.1數據模型設計-產品SKU(SKU)SKU圖片01SKU圖片用于展示SKU的圖片信息。SKU單價02SKU單價表示SKU的價格,即單個SKU的售價。SKU庫存03SKU庫存表示SKU的庫存數量,即該SKU當前可供銷售的數量。14.4.1數據模型設計-產品SKU(SKU)14.4.1數據模型設計-產品SKU(SKU)03SKU屬性SKU是產品的具體規(guī)格,用于標識不同的產品變種。每個SKU具有唯一的SKU編碼,屬于特定的產品,并具有描述、圖片、價格、庫存等屬性。01SPU編碼SPU編碼是SKU所屬的SPU的唯一標識符,用于關聯SKU和其對應的SPU。02SPU名稱SPU名稱是SPU的名稱信息,用于描述SKU所屬的SPU的名稱。SKU與SPU關聯SKU也與SPU相關聯,通過SPU編碼和SPU名稱來表示SKU所屬的標準化商品單元。管理系統(tǒng)這樣的設計可以方便地管理和銷售不同規(guī)格的產品,并對其進行庫存和價格的管理。14.4.1數據模型設計-產品SKU(SKU)安裝Pillow庫后,可使用ImageField字段來處理圖片相關的操作。Pillow庫的功能Pillow庫是一個強大的圖像處理庫,提供了許多功能,包括圖片的加載、保存、調整大小、裁剪等操作。安裝Pillow庫的作用安裝Pillow庫后,用戶可以更方便地處理產品模型中的圖片字段。ImageField字段的作用14.4.2數據模型實現-安裝Pillow庫以支持圖片處理在生產環(huán)境中,將媒體文件的處理和存儲交給Web服務器或CDN來處理,而不是使用Django的開發(fā)服務器。媒體文件處理定義媒體文件的URL和存儲路徑,以便在Django服務中正確地顯示圖片。靜態(tài)文件URL與路徑在ECommerce主工程中的urls.py文件中添加代碼,將媒體文件的URL映射到對應的文件路徑。動態(tài)URL映射14.4.2數據模型實現-配置ProductAdminDjango后臺管理界面中,ProductAdmin類定義了產品列表的顯示字段,包括ITEM_ID、ITEM_NAME、img_data、STOCK和SALES_VOLUME。SKUAdmin類定義了SKU列表的顯示字段,包括SKU_ID、SKU_SPEC和SKU_STOCK,用于管理后臺對SKU信息進行展示和操作。CategoryAdmin類定義了類別列表的顯示字段,包括CATEGORY_ID和CATEGORY_NAME,方便后臺管理人員對類別信息進行管理。ChannelAdmin類定義了渠道列表的顯示字段,包括CHANNEL_ID、CHANNEL_NAME和CHANNEL_CATEGORY,用于管理后臺對渠道信息進行展示和操作。在ECommerce主工程中的settings.py文件中,需要添加對'ProductCenter'應用的注冊,確保該應用能夠正常工作。SKUAdminChannelAdminsettings.pyCategoryAdmin14.4.3注冊商品模型到管理后臺1234通過manage.pycreatesuperuser命令為管理后臺生成管理員賬號,確保后臺的正常運行。在瀏覽器中輸入:8000/admin,輸入設置的用戶名和密碼登錄Django的管理后臺。管理后臺是Django的內置功能,提供直觀易用的界面,界面模版文件路徑在lib/Django/contrib/templates/admin。Django管理后臺默認的界面模版代碼位置如圖14-15所示,確保了后臺界面的統(tǒng)一和規(guī)范性。生成管理員賬號默認界面模版管理后臺界面登錄管理后臺14.4.3生成遷移文件并應用數據庫遷移用戶可以在管理后臺中輕松地創(chuàng)建新的商品,根據需求填寫商品信息,以便進行后續(xù)操作。創(chuàng)建商品用戶可以隨時更新現有商品的信息,包括商品名稱、價格、庫存等,以保持商品數據的實時性。更新商品信息用戶可以方便地刪除不需要的商品,通過選擇要刪除的商品,并確認刪除操作,以提高商品管理的效率。刪除商品管理后臺為商家提供了一個方便快捷的途徑來管理和維護商品數據,有助于商家更好地運營和管理店鋪。途徑14.4.3創(chuàng)建管理員賬號并登錄管理后臺定義Django模型,并創(chuàng)建與模型對應的序列化器。定義模型和序列化器創(chuàng)建視圖和路由運行項目測試API接口使用DRF提供的工具創(chuàng)建視圖和路由,定義API接口。運行Django項目,確保所有組件都正常工作。使用工具或方法測試創(chuàng)建的API接口,確保其正常工作。14.4.4DjangoRESTframeworkINSTALLED_APPS配置Django框架的INSTALLED_APPS配置項用于指定Django項目中所使用的應用。默認應用在Django項目中,'Django.contrib'下的應用是Django自帶的默認應用,提供了豐富的功能模塊。rest_framework'rest_framework'是一個強大的DjangoRESTframework,用于構建WebAPI。ProductCenter'ProductCenter'可能是一個自定義應用,用于管理產品相關的數據和功能。14.4.4在工程中配置DRF序列化器定義:在`serializers.py`文件中,定義了多個序列化器類,用于將模型對象轉換為JSON格式的數據。Channel序列化器:`ChannelModelSerializer`類繼承自`ModelSerializer`,用于序列化`Channel`模型的數據。類別序列化器:`CategoryModelSubSerializer`和`CategoryModelSerializer`類用于序列化`Category`模型的子類別和自身數據。產品序列化器:`ProductModelSerializer`類繼承自`ModelSerializer`,用于序列化`Product`模型的數據。SKU序列化器:`SKUModelSerializer`類繼承自`ModelSerializer`,用于序列化`SKU`模型的數據。14.4.4創(chuàng)建序列化器(Serializer)CategoryViewSet同樣繼承自ModelViewSet,用于處理與Category模型相關的請求。SKUViewSet繼承自ModelViewSet,用于處理與SKU模型相關的請求。ChannelViewSet繼承自ModelViewSet,用于處理與Channel模型相關的請求。ProductViewSet繼承自rest_framework的ModelViewSet,用于處理與Product模型相關的請求。14.4.4創(chuàng)建API視圖(Views)

定義路由使用Django的路徑和包含機制,以及rest_framework的DefaultRouter,定義了ProductCenter應用的URL路由。注冊視圖類通過DefaultRouter的register方法,將各個ViewSet視圖類注冊到路由中,實現了RESTfulAPI的基本架構。包含其他路由通過include函數將ProductCenter應用的URL路由包含到主工程的URL路由中,實現了不同應用之間的路由共享。14.4.4配置URL路由通過瀏覽器窗口訪問:8000/p/products/獲取商品信息,并添加一些商品信息。添加商品信息添加商品信息后,后臺會顯示商品列表,可以查看商品信息是否添加成功。再次訪問接口時,響應的數據包內容會顯示具體的商品信息。為了統(tǒng)一響應報文的格式,通常會自定義響應報文字段,包括code、msg和實際的數據內容。為了實現代碼的復用性,用戶可以將其抽象為一個工具,并在主工程中進行應用。商品列表顯示響應數據包內容統(tǒng)一響應報文格式抽象為工具14.4.4測試和使用APIlist方法list方法用于獲取資源列表,包括過濾查詢集、序列化查詢結果、返回包含代碼、消息、數據和狀態(tài)的響應。抽象自定義響應視圖用戶可以將自定義響應視圖抽象成一個工具,放置在Common包下的respModelViewset.py文件中。定義工具類方法在respModelViewset.py文件中,用戶可以定義工具類的方法,如create和list,用于處理自定義響應。create方法create方法用于創(chuàng)建新資源,包括序列化請求數據、驗證有效性、執(zhí)行創(chuàng)建操作、設置成功頭部信息并返回響應。14.4.4定義CustomResponse自定義響應類在Django中配置CORS的步驟包括安裝Django-cors-headers庫,并在項目設置文件中進行相關配置。Django-cors-headers庫優(yōu)化后,商品信息響應報文格式如圖14-21所示,實現了商品列表、商品詳情等查詢功能的統(tǒng)一輸出。統(tǒng)一響應報文格式為了使前后端分離架構的Vue工程能夠訪問此接口,需要設置跨域訪問,并在Django應用中啟用跨域資源共享(CORS)??缬蛟L問配置14.4.4定義RespModelViewset自定義響應視圖類14.4.4安裝Django-cors-headers庫安裝Django-cors-headers庫使用pip安裝Django-cors-headers庫,確保在項目中能夠順利引入并使用。添加corsheaders到INSTALLED_APPS在主工程的settings.py文件中,將corsheaders添加到INSTALLED_APPS列表中。定義CORS_ORIGIN_ALLOW_ALL在設置文件中定義CORS_ORIGIN_ALLOW_ALL為True以允許任何源的請求,或指定允許的源列表。CorsMiddleware將'corsheaders.middleware.CorsMiddleware'添加到MIDDLEWARE列表的頂部,以確保CORS中間件優(yōu)先處理請求。CORS_ALLOW_CREDENTIALS如果希望在請求中包含憑據(如Cookie或身份驗證標頭),可以將CORS_ALLOW_CREDENTIALS設置為True。14.4.4將CorsMiddleware添加到中間件列表的頂部通過Vue工程調用前端頁面,頁面顯示效果如圖14-22所示。調用前端頁面前端頁面提供訪問商品信息的功能,用戶可以方便地查看和選擇商品。訪問商品信息14.4.4設置CORS_ALLOW_CREDENTIALS為True使用pip安裝Django-filter庫,確保項目能夠正常使用該庫提供的功能。安裝Django-filter在項目的settings.py文件中,將Djangofilter添加到INSTALLED_APPS列表中,以便項目能夠正確識別和使用該應用。添加到INSTALLED_APPS14.4.4安裝Djangofilter定義了一個名為ProductFilter的過濾器類,它繼承自Django_filters.FilterSet。定義過濾器類在過濾器類中定義了幾個過濾器字段來對Product模型進行過濾操作。過濾器字段使用Django_filters.CharFilter創(chuàng)建字符字段過濾器,用于PRODUCT_NAME的模糊搜索。name字段14.4.4創(chuàng)建商品過濾器min_price字段使用Django_filters.NumberFilter創(chuàng)建數字字段過濾器,用于SALE_PRICE的比較操作。max_price字段與min_price類似,但用于SALE_PRICE的上限比較。category字段使用Django_filters.CharFilter創(chuàng)建字符字段過濾器,用于CATEGORY_NAME的模糊搜索。Meta類指定了過濾器類所對應的模型和字段,用于確定過濾操作的作用范圍和方式。14.4.4創(chuàng)建商品過濾器使用DjangoFilter提供的過濾器類`ProductFilter`來處理商品的搜索和篩選,通過GET請求向`/products`路徑發(fā)送查詢參數來獲取符合條件的商品數據。商品搜索和篩選在Django中可以使用Redis作為緩存來提高應用程序的性能,Redis是一個開源的內存數據結構存儲,它可以用作高性能的鍵值緩存存儲。緩存提升性能14.4.4在視圖類中處理商品的搜索和篩選安裝redis服務端在操作系統(tǒng)上安裝Redis服務端,用戶需要從Redis官方網站下載適合自己操作系統(tǒng)的安裝包,并按照說明進行安裝。安裝redis數據庫安裝完成后,用戶需要在操作系統(tǒng)上創(chuàng)建Redis數據庫,并設置相應的密碼和權限,以確保數據庫的安全性和穩(wěn)定性。14.4.4安裝Redis安裝Redis支持庫:使用pip安裝redispip和Django_redis庫,為項目提供Redis緩存支持。配置redis參數:在主工程的settings.py文件中,配置redis參數,包括BACKEND、LOCATION和OPTIONS等。設置緩存后端:將CACHE的后端設置為'Django_redis.cache.RedisCache',以便使用Redis作為緩存系統(tǒng)。指定redis服務器地址:將LOCATION設置為'redis://localhost:6379',以指定Redis服務器的地址和端口。配置客戶端類:在OPTIONS中配置客戶端類為'Django_redis.client.DefaultClient',以確保使用默認的客戶端實現。14.4.4安裝Redis支持庫配置URL路由在ProductCenter應用中創(chuàng)建urls.py文件,配置URL以便將ViewSet視圖類映射到相應的路由,使用DRF提供的默認路由類來自動生成URL路由。在ECommerce主工程中的根urls.py文件中進行相關配置,以確保URL路由能夠正確解析并調用相應的視圖函數或類。在ECommerce主工程中,通過創(chuàng)建DefaultRouter實例,并將各個ViewSet視圖類注冊到路由中,實現API的統(tǒng)一管理和訪問。根urls.py文件配置DefaultRouter實例14.4.4在主工程中settingsVS使用include函數將ProductCenter應用的URL路由包含到主工程的URL配置中,以確保API的可用性和訪問權限。測試API通過訪問相應的URL,可以測試和使用這些API,例如:8000/p/products/將路由到ProductViewSet中定義的各個動作。include函數14.4.4在主工程中settings14.5交易中心設計與落地第14章實戰(zhàn)電商平臺購物車編碼CART_ID,唯一標識一個購物車,確保購物車的唯一性。產品編碼ITEM_ID,唯一標識一個產品,便于產品的管理和跟蹤。產品名稱ITEM_NAME,存儲產品的名稱信息,方便查看和識別產品。14.5.1數據模型設計-購物車(Cart)SALE_PRICE,表示產品的價格,用于計算產品的總價。ITEM_QUANTITY,表示購買的產品數量,用于計算庫存和需求。ITEM_STATUS,使用布爾值表示,表示產品是否有效,便于進行商品篩選。ACCOUNT_ID,用于關聯購物車與用戶,便于查看用戶的購物記錄。產品單價購買產品數量產品有效狀態(tài)用戶編碼14.5.1數據模型設計-購物車(Cart)

支付編碼唯一標識一個支付,確保支付的準確性和安全性。訂單編碼關聯支付與訂單,方便查詢和管理訂單信息。支付流水號唯一標識一個支付流水,用于查詢和跟蹤支付記錄。14.5.1數據模型設計-支付信息(Payment)03支付狀態(tài)使用布爾值表示支付是否完成,便于查詢和跟蹤支付狀態(tài)。01支付方式表示支付的方式,如支付寶、微信支付等。02支付金額表示支付的金額,用于計算和確認支付總額。14.5.1數據模型設計-支付信息(Payment)表示支付的時間,用于查詢和跟蹤支付記錄。支付時間包括購物車編碼、產品編碼、產品名稱、產品單價、購買產品數量、產品有效狀態(tài)和用戶編碼等字段,用于存儲和管理購物車相關數據。購物車字段包括支付編碼、訂單編碼、支付流水號、支付方式、支付金額、支付狀態(tài)和支付時間等字段,用于存儲和管理支付相關數據。支付信息字段14.5.1數據模型設計-支付信息(Payment)基礎模型類定義定義了一個基礎模型類BaseModel,包含了創(chuàng)建時間和更新時間兩個字段。購物車數據模型定義定義了一個Cart類,表示購物車數據模型,包含了購物車編碼、產品編碼、產品名稱等字段。商品中心數據模型定義在TransactionCenter應用的models.py文件中,實現了商品中心數據模型的定義。14.5.2數據模型實現數據庫抽象層和應用標簽01通過Meta類的abstract=True和app_label='transaction',將模型定義為抽象基類和指定應用標簽。字段類型和約束02使用了Django的models.CharField、models.DecimalField和models.IntegerField來表示字符串、十進制數和整數類型。默認值和verbose_name03為部分字段設置了默認值,并使用verbose_name參數為字段提供更友好的名稱。14.5.2數據模型實現數據模型注冊將交易中心的數據模型注冊到管理后臺,需要修改交易中心應用的admin.py文件,添加相應的ModelAdmin類。在ModelAdmin類中,通過list_display屬性指定要在Django管理后臺中顯示的字段。在ECommerce主工程的settings.py文件中,將'TransactionCenter'應用添加到INSTALLED_APPS列表中,以便在Django管理后臺中使用。運行manage.pymakemigrations命令來為模型的改變生成遷移文件,然后運行manage.pymigrate命令來應用數據庫遷移。在瀏覽器中輸入:8000/admin,登錄Django的管理后臺,就可以執(zhí)行交易中心的基本管理操作。列表顯示字段生成遷移文件執(zhí)行基本管理操作注冊應用14.5.3實現ToB可視化管理基于購物車數據模型,定義與JSON格式之間的序列化轉換。創(chuàng)建一個新的Python文件serializers.py,并添加相關代碼。序列化購物車模型實現一個API接口,接收請求參數,包括用戶ID、商品ID和數量等。根據請求信息創(chuàng)建或更新購物車記錄。添加商品到購物車14.5.3購物車交互流程處理支付結果回調支付接口在用戶支付完成后,會回調用戶預設的接口,用戶需要實現接收回調的API,驗證支付結果,更新訂單的支付狀態(tài)和其他相關信息。集成支付接口選擇適合的支付接口,如支付寶、微信支付等,按照接口文檔集成支付接口,并獲取相應的應用密鑰和商戶信息。創(chuàng)建支付訂單在下單時,生成唯一的訂單號,并將訂單信息保存到數據庫中,包括訂單金額、支付狀態(tài)等。發(fā)起支付請求實現一個API接口,接收支付請求,根據訂單號和支付金額等信息,調用支付接口的API發(fā)起支付請求,獲取支付鏈接或二維碼等支付憑證。14.5.4支付交互流程14.6訂單中心設計與落單第14章實戰(zhàn)電商平臺訂單編碼是用于唯一標識訂單的編號,有助于確保每個訂單的獨特性。訂單總價表示訂單中所有商品的總價格,有助于計算訂單的價值。訂單狀態(tài)使用布爾值表示,True表示訂單已完成,False表示訂單未完成。用戶編碼用于關聯訂單與用戶,有助于了解每個用戶的訂單情況。訂單編碼訂單總價訂單狀態(tài)用戶編碼14.6.1數據模型設計-訂單信息(Order)關聯訂單對象(ORDER)是外鍵字段,與Order模型相關聯,用于表示訂單之間的關系。訂單關聯產品關聯產品數量客戶備注關聯產品對象(PRODUCT)是外鍵字段,與Product模型相關聯,用于表示產品之間的關系。產品數量(QUANTITY)是一個正整數字段,用于表示商品的數量,確保交易的準確性??蛻魝渥ⅲ≧EMARK)是一個允許用戶在訂單中添加額外備注信息的字段,用于提供更多相關信息。14.6.1數據模型設計-詳單信息(OrderItem)03訂單編碼與訂單模型建立的外鍵關聯,將物流信息與訂單關聯起來,方便查詢和管理。01物流編號用于唯一標識物流信息,確保在整個物流過程中信息的準確性和一致性。02物流單號物流公司為該訂單生成的唯一單號,可用于查詢訂單的物流狀態(tài)和相關信息。14.6.1數據模型設計-物流信息(Logistics)收貨人姓名訂單的收貨人姓名,用于確認收貨人的身份和準確性,確保貨物準確送達。電話號碼訂單的收貨人聯系電話,用于與收貨人溝通聯系,確保貨物準確送達。收貨地址訂單的收貨地址信息,包括收貨人姓名、電話和地址,確保貨物準確送達。14.6.1數據模型設計-物流信息(Logistics)快遞公司名稱負責配送訂單的快遞公司名稱,可用于查詢該公司的配送服務和費用。物流費用訂單的物流配送費用,根據所選的物流方式和快遞公司不同而有所差異。物流方式訂單的物流配送方式,如快遞、物流公司等,用于確認配送服務和費用。14.6.1數據模型設計-物流信息(Logistics)訂單中心數據模型定義在OMS應用的models.py文件中,可以實現訂單中心數據模型的定義?;A模型定義定義一個基礎模型BaseModel,包含創(chuàng)建時間和更新時間兩個字段。訂單模型定義定義一個訂單模型Order,包含訂單編碼、訂單總價、訂單狀態(tài)和用戶編碼四個字段。計算訂單總價方法定義一個計算訂單總價的方法calculate_total_price,用于計算訂單項的總價。14.6.2數據模型實現配置ModelAdmin為每個模型配置相應的ModelAdmin類,用于定義管理界面中要顯示的數據字段。注冊應用添加在settings.py文件中注冊'OMS'應用,以確保其能夠作為Django項目的一部分正確運行。訂單模型注冊通過配置,將訂單模型注冊到管理后臺,包括Order、OrderItem和Logistics三個模型。14.6.3實現ToB可視化管理生成遷移文件01運行manage.pymakemigrations命令來為模型的改變生成遷移文件,確保數據庫架構的更新。應用數據庫遷移02運行manage.pymigrate命令來應用數據庫遷移,將模型的改變應用到實際數據庫中。登錄管理后臺03通過瀏覽器訪問:8000/admin,登錄Django管理后臺,執(zhí)行訂單中心的基本管理操作。14.6.3實現ToB可視化管理雪花算法雪花算法是一種通過位運算生成分布式唯一ID的算法,可以保證在分布式環(huán)境下生成全局唯一且有序的ID,具有高性能和高可用性。封裝雪花算法在訂單中心中,通常會將雪花算法進行封裝,以便在需要生成訂單號時調用封裝好的生成函數,確保訂單號的唯一性。雪花算法代碼實現在Common包中新建snowFlake.py文件,添加雪花算法的代碼實現,包括EPOCH、SEQUENCE_BITS、WORKER_ID_BITS等常量。生成函數定義一個生成函數generate_id,通過計算當前時間戳、worker_id和sequence來生成唯一的ID,并保證ID的有序性。14.6.4實現ToC訂單的核心邏輯服務-訂單號的生成下單流程單一商鋪場景多商鋪場景樂觀鎖算法用戶在單一商鋪中選擇不同的商品和數量,系統(tǒng)檢查庫存并創(chuàng)建訂單,生成訂單號并返回響應。用戶通過購物車選擇不同商鋪的商品,下單流程包括拆單操作,生成多個子訂單,系統(tǒng)檢查庫存并創(chuàng)建訂單。為了避免超賣或重復下單問題,同時提高性能,使用樂觀鎖算法來實現數據版本控制,保證數據一致性和并發(fā)安全性。下單流程是指用戶提交訂單并完成訂單創(chuàng)建和處理的整個過程,會根據不同的業(yè)務場景而有所不同。14.6.4實現ToC訂單的核心邏輯服務-下單流程14.7用戶中心設計

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論