終于找到了一個(gè)Python棧優(yōu)質(zhì)前后端分離開源商城系統(tǒng)(python前后端分離開發(fā))
項(xiàng)目簡(jiǎn)介
baykeShop(拜客商城系統(tǒng))是一款全開源Python棧商城系統(tǒng),管理后臺(tái)完全前后端分離重寫以適配項(xiàng)目,前后端100%開源,后臺(tái)前端采用開源SCUI開源庫(kù)對(duì)接開發(fā),美觀、易用、符合當(dāng)前時(shí)下流行的技術(shù)棧,后端依托django強(qiáng)大的框架體系,深度結(jié)合rest_framework第三方包,使得前后端共用一套接口體系分發(fā)擴(kuò)展,商城PC端采用接口數(shù)據(jù)可視化的方式采用html渲染還原頁(yè)面,使其更符合web端的需求,更利于SEO優(yōu)化,擺脫了前后端分離所帶來(lái)的打包過(guò)程,以及上手難度,更易維護(hù),開發(fā),學(xué)習(xí)!
本項(xiàng)目融合了django的傳統(tǒng)模版體系,同時(shí)結(jié)合了前后端分離的開發(fā)方式,在不同場(chǎng)景選擇了不同的技術(shù)棧,使其更具學(xué)習(xí)和研究?jī)r(jià)值,是python django初學(xué)者開發(fā)上手學(xué)習(xí)的不二選擇!
項(xiàng)目演示
商城PC端前臺(tái):http://s.bayke.shop商城管理后臺(tái):http://s.bayke.shop/baykeadmin演示賬號(hào):demo 密碼:123456
備注:前后臺(tái)用戶通用
快速上手
一、 拉取項(xiàng)目
將本倉(cāng)庫(kù)拉取到本地,也就是當(dāng)前你看到的分支main
git clone https://gitee.com/bayke/bayke-shop.git
二、 創(chuàng)建虛擬環(huán)境
在項(xiàng)目根目錄中,也就是在manage.py的同級(jí)創(chuàng)建,命令如下:
python -m venv venv
運(yùn)行該命令之后會(huì)創(chuàng)建一個(gè)venv的文件夾,此時(shí)虛擬環(huán)境則創(chuàng)建成功!
三、 激活虛擬環(huán)境,安裝依賴
3.1 激活虛擬環(huán)境:
# windows系統(tǒng)venvScriptsactivate# Liunx系統(tǒng)source venv/bin/activate
激活成功后在終端命令行最開始會(huì)出現(xiàn)(venv)則代表激活成功,注意,后邊所有的操作都是在激活虛擬環(huán)境的狀態(tài)下進(jìn)行的!
3.2 安裝項(xiàng)目依賴:
在安裝依賴之前有必要先對(duì)項(xiàng)目的配置有個(gè)簡(jiǎn)單的了解。
項(xiàng)目目錄為bayke目錄,其中將配置文件拆分成了三部分:
- settings.py為共用配置,也就是在開發(fā)環(huán)境和生產(chǎn)環(huán)境共同的配置項(xiàng)
- development.py為開發(fā)環(huán)境配置,當(dāng)前的默認(rèn)配置
- production.py為生產(chǎn)環(huán)境配置,部署上線時(shí)盡量啟用該配置(非必須)
備注:為了使用簡(jiǎn)便,降低開發(fā)者理解難度,我們僅是通過(guò)引入包的方式 from .development import *將開發(fā)環(huán)境或生產(chǎn)環(huán)境配置引入到了settings.py中,也就是說(shuō)你可以在開發(fā)時(shí)隨意引入他們兩個(gè)的任何一個(gè),沒有局限,不同之處是production.py中啟用了mysql數(shù)據(jù)庫(kù)和redis,需要安裝對(duì)應(yīng)的依賴,已包含在依賴列表requirements.txt中!
由于mysql數(shù)據(jù)庫(kù)的依賴包mysqlclient在不同的環(huán)境下安裝時(shí)會(huì)常出現(xiàn)安裝失敗的現(xiàn)象,目前測(cè)試在windows和Ubuntu中都沒有問(wèn)題,但在Centos系統(tǒng)中會(huì)出現(xiàn)莫名其妙的錯(cuò)誤,導(dǎo)致安裝失敗,由于每個(gè)人出現(xiàn)的錯(cuò)誤可能不一樣,沒有一個(gè)通用的行之有效的解決方案,目前暫時(shí)建議開發(fā)環(huán)境選擇windows或ubuntu其中一個(gè),部署系統(tǒng)選擇Ubuntu即可!
如果不啟用mysql,則可以在requirements.txt中注釋掉mysqlclient依賴項(xiàng)之后再運(yùn)行安裝命令!
安裝依賴:pip install -r requirements.txt
注意:當(dāng)啟用了mysql之后,需在根目錄的mysql.cnf配置中配置自己的數(shù)據(jù)庫(kù)信息!
[client]database = baykedbuser = rootpassword = 123456host = 127.0.0.1port = 3306default-character-set = utf8
四、初始化項(xiàng)目
4.1 同步數(shù)據(jù)庫(kù)并建表
python manage.py redb
該命令會(huì)清空新建app中應(yīng)用的遷移文件并重新生成,然后自動(dòng)向數(shù)據(jù)庫(kù)執(zhí)行建表操作,也就是說(shuō)他會(huì)自動(dòng)執(zhí)行makemigrations和migrate命令!
5.1 導(dǎo)入初始化數(shù)據(jù)及權(quán)限接口數(shù)據(jù)
python manage.py pushdata
注意:與之對(duì)應(yīng)的有一個(gè)exportdata的導(dǎo)出命令,當(dāng)你改變了后臺(tái)的擴(kuò)展配置、后臺(tái)菜單、接口管理中的任何一項(xiàng),則可以使用到處命令進(jìn)行備份,以便在別的地方部署時(shí)及時(shí)導(dǎo)入,這幾個(gè)數(shù)據(jù)是本項(xiàng)目運(yùn)行的必要數(shù)據(jù),所以必須要有?。ㄆ渌麛?shù)據(jù)備份的方式自行決定!)
五、創(chuàng)建超級(jí)管理員運(yùn)行項(xiàng)目
5.1 創(chuàng)建超級(jí)管理員
python manage.py createsuperuser
5.2 運(yùn)行項(xiàng)目后端
python manage.py runserver 3000
到這里項(xiàng)目的后端接口就已經(jīng)運(yùn)行起來(lái)了,PC端商城也可以預(yù)覽了,但管理后臺(tái)采用了前后端分離的方式開發(fā),需要再配置運(yùn)行一下前端!
六、后臺(tái)前端運(yùn)行
后臺(tái)前端源碼目錄在根目錄的fronted/scui中,標(biāo)準(zhǔn)的vue項(xiàng)目,選擇scui這個(gè)開源項(xiàng)目就是因?yàn)槠渖鲜趾?jiǎn)單易使用組件眾多,便于開發(fā),沒有使用TS,徒增心智負(fù)擔(dān),對(duì)很多項(xiàng)目來(lái)說(shuō)都是沒有必要的!
這里啟動(dòng)和運(yùn)行可以參考scui本身的文檔:https://lolicode.gitee.io/scui-doc/guide/
在這里再次感謝scui開源作者的辛苦付出!
注意:開發(fā)環(huán)境由于前端和后端不同域,會(huì)存在跨域問(wèn)題,后端需要再配置文件的CORS_ALLOWED_ORIGINS和CSRF_TRUSTED_ORIGINS配置中放行前端地址!如下所示:
# 配置允許跨域訪問(wèn)的站點(diǎn)列表CORS_ALLOWED_ORIGINS = [ 'http://192.168.31.174', 'http://127.0.0.1:2800']# csrf可信來(lái)源CSRF_TRUSTED_ORIGINS = [ 'http://192.168.31.174', 'http://127.0.0.1:2800']
支付寶支付配置
為了簡(jiǎn)化支付寶的配置難度,本項(xiàng)目將支付寶的配置項(xiàng)內(nèi)置到了管理后臺(tái)系統(tǒng)設(shè)置的擴(kuò)展配置當(dāng)中,僅超級(jí)管理員擁有該權(quán)限!
如上圖所示,目前該配置僅允許超級(jí)管理員增刪改查,雖然內(nèi)置了刪除功能但最好不要?jiǎng)h除,擴(kuò)展配置均是代碼運(yùn)行過(guò)程中需要調(diào)用的配置,作為開發(fā)者除非你非常清楚你知道某個(gè)配置項(xiàng)的作用以及調(diào)用位置,否則不建議刪除和修改配置項(xiàng)的key值!
- alipay_app_id 支付寶支付APPID
- alipay_private_key 支付寶支付私鑰pivate_key
- alipay_public_key 支付寶公鑰alipay_public_key
這里需要注意的是支付寶一般的配置流程是,下載官方的支付寶開放平臺(tái)秘鑰工具,首先生成秘鑰,此時(shí)就得到了應(yīng)用的公鑰和私鑰,然后用應(yīng)用公鑰去支付寶后臺(tái)加簽換取支付寶公鑰,將支付寶公鑰對(duì)應(yīng)的配置到后臺(tái),應(yīng)用私鑰還要經(jīng)過(guò)一個(gè)步驟,就是需要將得到的應(yīng)用私鑰進(jìn)行一次格式轉(zhuǎn)換,在支付寶開放平臺(tái)秘鑰工具中操作,將轉(zhuǎn)換后的私鑰,配置到后臺(tái)對(duì)應(yīng)的私鑰項(xiàng),配置APPID,支付寶配置即完成!
異步通知及同步通知不需要在支付寶后臺(tái)配置,代碼中已經(jīng)配置好了,支付完之后會(huì)自動(dòng)跳轉(zhuǎn)和通知回調(diào)修改訂單狀態(tài)!
- 生成應(yīng)用公鑰和私鑰
- 用應(yīng)用公鑰加簽換取支付寶公鑰
- 轉(zhuǎn)換應(yīng)用私鑰格式