vue+django restful framework 電商專案(三) -- xadmin安裝和 商品資料的匯入
xadmin的安裝和配置詳見部落格:http://www.cnblogs.com/shhnwangjian/p/6372503.html 途中可能會遇到缺少什麼包, 用pip安裝就是了. 此部配置直到能進xadmin後臺就可以了.
接下來我們配置我們專案需要用到的一些功能.
首先是我們來把富文字編輯器嵌入在xadmin中, xadmin的官方文件:
因為這個xadmin外掛開發不是一時半會能學會的, 我們主要的目的是學會drf 我們照著教程做吧.
注意教程中有一個url的寫法因為版本的不同有bug,
改為
這是因為他們使用的django2.0版本, 而我們使用的是1.10版本.
4.3.註冊app到xadmin後臺
每個app下都新建adminx.py 為什麼要建? 因為: 類似django自動生成的admin.py檔案,xadmin會自動在每個app下搜尋 xadminx.py並註冊, 這是xadmin的執行機制.
4.3.1註冊users到xadmin
我們來一張效果圖吧.
註冊前:
注意: 這裡的使用者資訊是django中管理後臺者的使用者資訊, 並不是商城網站使用者者的資訊, 管理後臺使用者資訊無論是django自帶的admin還是xadmin, 都會自動生成的,
註冊後:
我們這隻把簡訊驗證表的檢視類註冊到後臺, 至於為什麼不把商城使用者的資訊註冊到後臺, 我暫且也不知道, 等到老師再講吧,
注意看左上角的慕學生鮮和右下角的llls_making, 這就是程式碼中:
這裡實現的.不好意思, 慕學的慕寫錯了, 我這就改過來. 接下來我們看看這一塊的效果
變成後:變更前: , 很明顯就是把類檢視的名字由原來的users -> 使用者管理.
4.3.1註冊goods
我們這裡講一下一個重點知識,在上面那個部落格中的這一段程式碼:
# 在新增商品的時候可以新增商品圖片
class GoodsImagesInline(object):
model = GoodsImage
exclude = ["add_time"]
extra = 1
style = 'tab'
inlines = [GoodsImagesInline] # 一對多模型中管理介面可以管理多個module
這一段程式碼是為了在新增商品的時候可以新增商品圖片
其他商品類我們就不講了, 因為都是xadmin的基礎知識.
4.4.匯入商品類別資料
我們做測試一定要大量的資料, 那麼這些資料都是手動一個一個匯入進去嗎? 這不是很沒效率, 別忘了, 人的腦子是用來想問題的, 而不是用來做重複的事的. python原來本來就是做自動化相關的, 我們用python來自動匯入吧.
我本來想講一下這一段程式碼怎麼來的
# db_tools/data/import_category_data.py
#獨立使用django的model
import sys
import os
#獲取當前檔案的路徑(執行指令碼)
pwd = os.path.dirname(os.path.realpath(__file__))
#獲取專案的跟目錄
sys.path.append(pwd+"../")
#要想單獨使用django的model,必須指定一個環境變數,會去settings配置找
#參照manage.py裡面就知道為什麼這樣設定了
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MxShop.settings")
import django
django.setup()
結果出來的基本都是如何去用, 而都不會去糾結這些語句都是幹嘛用的, 唉.... 實在找不到, 我們先照著模板用的吧.
程式碼的理解和書寫, 自己獨立完成吧, 我就不詳細寫了, 因為這都比較基礎,
匯入成功後, 我們點開一個數據看,
這裡為什麼圖片沒有顯示, 只是一個名稱, 這是因為還沒有配置靜態檔案, django靜態檔案的配置詳見: https://segmentfault.com/a/1190000004232816
在這裡直接按照最頂層的部落格教程做. 由於部落格中的django版本和我們的不一樣, 需要做一定的修改, urls改為
from django.views.static import serve
from VueShopProject.settings import MEDIA_ROOT
urlpatterns = [
url('xadmin/', xadmin.site.urls),
url(r'^ueditor/', include('DjangoUeditor.urls')),
url(r'media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT}),
]
我們再次執行django, 看看圖片顯示出來了沒有
圖片顯示正常!