幾乎不寫一行代碼,快速開發(fā)后臺功能
??點擊“博文視點Broadview”,獲取更多書訊

Python 長期穩(wěn)居編程語言排行的前五,不僅已經(jīng)成為數(shù)據(jù)分析、人工智能領域必不可少的工具,還被越來越多地公司用于網(wǎng)站搭建。Python 方向崗位的薪水在水漲船高,成為目前最有潛力的編程語言之一。
目前,市場上的Python基礎書很多了,那你在學完Python基礎書后有沒有興趣用Python的Web框架Django來進行網(wǎng)站開發(fā)呢?
本文將介紹商城系統(tǒng)后臺的需求分析、架構設計及數(shù)據(jù)庫設計。
商城系統(tǒng)后臺,使用Django框架自帶的Admin后臺管理系統(tǒng)來實現(xiàn)。
在創(chuàng)建好模型后,幾乎不寫一行代碼即可快速開發(fā)出商城系統(tǒng)的后臺功能。
商城系統(tǒng)后臺的設計分析,主要包含需求分析、架構設計和數(shù)據(jù)庫模型設計。
1.需求分析
商城系統(tǒng)后臺的功能如下圖所示。

2.架構設計
為實現(xiàn)商城系統(tǒng)后臺,采用Django框架作為服務器端的基礎框架,采用“HTML + CSS + JavaScript”搭建前端,數(shù)據(jù)庫采用MySQL,如下圖所示。

3.數(shù)據(jù)庫模型設計
準確了解用戶需求是整個系統(tǒng)設計的基礎,也是最困難、最耗費時間的一步。在了解清楚需求后,開始進行數(shù)據(jù)庫模型設計。模型設計分為邏輯模型設計和物理模型設計。
邏輯模型設計:將業(yè)務需求具體化,實現(xiàn)具體業(yè)務場景所描述的東西。比如,用戶信息包括用戶姓名、性別和聯(lián)系電話等屬性,一個商品分類可以有0個、1個或多個商品。
物理模型設計:針對邏輯模型分析的內(nèi)容,在具體的物理介質(zhì)上實現(xiàn)出來。比如,在MySQL數(shù)據(jù)庫中編寫SQL腳本建立用戶信息表。
從邏輯模型到物理模型,是一個從抽象到具體、不斷細化完善的過程。一般使用PowerDesign或者PDMan進行數(shù)據(jù)庫的模型設計。
(1)生成物理模型
在PDMan中可以新增模型,設計商品分類表和商品表,如下圖所示。商品分類表和商品表是“一對多”關系。

在模型設計完成后,可以導出DDL腳本,然后在指定數(shù)據(jù)庫中生成數(shù)據(jù)表。
(2)反向生成Django模型
在完成數(shù)據(jù)庫的物理模型設計后,可以根據(jù)物理模型反向生成Django模型。
在VS Code終端控制臺中輸入如下命令:
python manage.py inspectdb #輸出數(shù)據(jù)庫中的所有表到控制臺中python manage.py inspectdb > models.py #輸出到models.py文件中
當數(shù)據(jù)表中字段很多時,反向生成模型可以提高模型的編寫效率。
使用Django的Admin后臺管理系統(tǒng),不寫一行代碼即可完成數(shù)據(jù)的增加、刪除、修改和查詢。只要定義好模型,Django就能生成一個具備增加、刪除、修改和查詢功能的應用。這也是Django之所以非常流行的一個很大原因。如果對軟件界面效果要求不高,或者只是臨時做個界面錄入信息,則可以采用這種方式。
Django自帶的Admin后臺管理系統(tǒng)可用于對網(wǎng)站中的各個模塊進行管理,比如文字、圖片、文件等的增加、刪除、修改和查詢。
1.創(chuàng)建商城系統(tǒng)后臺項目
新建一個項目myshop-back,接下來的操作都在該項目中完成。在該項目下創(chuàng)建一個apps目錄,用來放置所有的商城應用。
(1)輸入如下命令創(chuàng)建應用。
python manage.py startapp basic #基礎應用python manage.py startapp goods #商品應用python manage.py startapp users #用戶應用python manage.py startapp order #訂單應用
創(chuàng)建完成后,將這4個應用目錄放到apps目錄下,如下圖所示。

打開本書配套資源中的“settings.py”,在INSTALLED_APPS列表中增加商城系統(tǒng)后臺的相關應用,如以下代碼所示。
INSTALLED_APPS = […'apps.basic', #注意寫法'apps.goods', #注意寫法'apps.order', #注意寫法'apps.users', #注意寫法…]
(2)創(chuàng)建商品分類模型和商品模型。
打開本書配套資源中的“apps/goods/models.py”,新增模型類GoodsCategory和Goods,如以下代碼所示。
…class GoodsCategory(BaseModel):id = models.AutoField(primary_key=True)name=models.CharField(max_length=50,verbose_name='分類名稱',default='')parent=models.ForeignKey("self", null=True,blank=True,verbose_name="父類",on_delete=models.DO_NOTHING,related_name="sub_cat")logo=models.ImageField(verbose_name="分類logo圖片",upload_to= "uploads/goods_img/")is_nav=models.BooleanField(default=False,verbose_name='是否顯示在導航欄')sort=models.IntegerField(verbose_name='排序')…class Goods(models.Model):STATUS=((0,'正常'),(1,'下架'),)name = models.CharField(max_length=50,verbose_name='商品名稱', default='')category=models.ForeignKey(GoodsCategory,blank=True,null=True, verbose_name='商品分類',on_delete=models.DO_NOTHING)market_price = models.DecimalField(max_digits=8,default=0, decimal_places=2,verbose_name='市場價格')price = models.DecimalField(max_digits=8, decimal_places=2,default=0,verbose_name='實際價格')…status=models.IntegerField(default=0,choices=STATUS)…
限于篇幅,其他模型不一一列出,讀者可以查閱本書配套資源中的代碼。接下來繼續(xù)配置Admin后臺管理系統(tǒng)。
2.登錄Admin后臺管理系統(tǒng)
在登錄Admin后臺管理系統(tǒng)前,需要創(chuàng)建一個管理員用戶。在VS Code終端界面輸入如下命令,之后根據(jù)命令提示輸入用戶名和密碼即可完成用戶的注冊。郵箱可以不用輸入。
python manage.py createsuperuser接下來就可以登錄Admin后臺管理系統(tǒng)了。訪問Admin后臺管理系統(tǒng)“http://localhost:8000/admin/”,使用剛才創(chuàng)建的管理員用戶名和密碼進行登錄,登錄后的界面如下圖所示。

3.配置Admin后臺管理系統(tǒng)
默認用戶模型和組模型會在Admin后臺管理系統(tǒng)中顯示出來,其他的模型還需要在每個應用中設置相應的文件才能正常顯示。
(1)設置apps.py文件
打開本書配套資源中的“goods/apps.py”,在其中添加如下代碼。
from django.apps import AppConfigclass GoodsConfig(AppConfig):name = 'apps.goods'verbose_name="商品管理"
這樣,“商品管理”會顯示在Admin后臺管理系統(tǒng)中的左側菜單導航中。
(2)設置__init__.py文件
打開本書配套資源中的“goods/__init__.py”,在其中添加如下代碼。
from .apps import GoodsConfigdefault_app_config = 'apps.goods.GoodsConfig'
__init__.py是應用的初始化文件。在該文件中設置default_app_config變量,用來指向apps.py文件中定義的AppConfig類。
(3)設置admin.py文件
打開本書配套資源中的“goods/admin.py”,在其中添加如下代碼。
from django.contrib import adminfrom apps.goods.models import *class GoodsCategoryAdmin(admin.ModelAdmin):admin.site.site_title="我的特產(chǎn)商城后臺"admin.site.site_header="我的特產(chǎn)商城后臺"admin.site.index_title="商城平臺管理"#設置列表中顯示的字段list_display=['name','logo','sort','create_time']#搜索search_fields=['name','parent_id']#過濾list_filter=['name','parent_id']#設置日期選擇器date_hierarchy='create_time'#設置每頁現(xiàn)實的數(shù)據(jù)量list_per_page=10#設置排序ordering=['sort']class SlideAdmin(admin.ModelAdmin):#設置列表中顯示的字段list_display=['goods_id','sort','images']
上述代碼的實現(xiàn)過程如下。
(1)自定義一個繼承自ModelAdmin的類。該類用來在Admin后臺管理系統(tǒng)中顯示模型。
(2)使用裝飾器將模型類Goods和GoodsAdmin關聯(lián)起來,并注冊到Admin后臺管理系統(tǒng)中。
admin.py用于將項目應用定義的模型獨享注冊,并綁定到Admin后臺管理系統(tǒng)中。注冊后,Admin后臺管理系統(tǒng)自動擁有了該模型對應數(shù)據(jù)表的增加、刪除、修改和查詢功能。
刷新Admin后臺管理系統(tǒng)界面,如下圖所示??梢钥吹皆谧髠鹊牟藛巍吧唐饭芾怼毕鲁霈F(xiàn)了商品信息、商品分類和首頁輪播等二級菜單。

單擊左側菜單中的“商品分類”鏈接,右側會顯示商品分類列表數(shù)據(jù)。商品分類列表數(shù)據(jù)按照在代碼中定義的規(guī)則進行顯示,如下圖所示。

此外,還可以對商品分類表和商品表進行數(shù)據(jù)維護,如下三圖所示。




感興趣的讀者可以動手試試Django的Admin后臺管理系統(tǒng)中的其他功能。
本文摘自《Django + Vue.js實戰(zhàn)派――Python Web開發(fā)與運維》,更多精彩內(nèi)容歡迎閱讀本書!
限時五折


掃碼查看本書詳情
如果喜歡本文 歡迎 在看丨留言丨分享至朋友圈 三連 熱文推薦
▼點擊閱讀原文,了解本書詳情~
