1. 程式人生 > >Django-xadmin後臺匯入json資料及後臺顯示資訊圖示和主題更改

Django-xadmin後臺匯入json資料及後臺顯示資訊圖示和主題更改

Django自帶有個強大的後天管理系統,接下來我就給大家介紹一下x的admin一些強大的操作及後臺美化。

首先給大家介紹一些xadmin的註冊建立,首先下載官方xadmin外掛包放到對應的第三方apps_extra資料夾中

 接下來就是在setting中註冊xadmin和crispy_forms到INSTALLED_APPS,接下來就是在我們的urls.py檔案中配置路由

import xadmin

urlpatterns = [
"""
    url(r'^xadmin/', xadmin.site.urls)
"""
]

 接下來就是在操作控制檯中輸入命令建立超級管理員賬號,命令是python manage.py createsupperuser

根據提示輸入相應的賬號,郵箱和使用者名稱,記得在登入xadmin後臺之前一定 遷移同步,將xadmin對應的表遷到mysql資料庫中

接下來就是跑起我們的專案,在對應的url網址後面後面加入/xadmin,登入我們的管理後臺。

 接下就是在每個app中新建adminx檔案,將應對的models註冊到xadmin中

import xadmin
from .models import Goods
class GoodCategoryBrandAdmin(object):
    fields=['category','name','image','desc','add_time']
#詳情頁欄位的順序及是否顯示配置,不寫的話預設顯示全部欄位
    list_display=['name','desc','add_time']
#列表顯示欄位的配置
    search_fileds=['name']
#搜尋框搜尋內容配置
    list_per_page=10
#列表顯示分頁的配置,每頁顯示資料多少
    list_filter=['name']
#過濾器配置
    
xadmin.site.register(Goods,GoodCategoryBrandAdmin)
#將Goods註冊到xadmin後臺

接下來就是把app中的每個models的類註冊到xadmin後臺中,下圖就我全部註冊完成之後顯示出來的效果

 起始後臺的名稱是django_xadmin的,大家一定想替換成對應的自己後臺名稱,接下來就是替換後臺名稱和標註以及導航欄伸縮效果的

from xadmin import views
class GlobalSettings(object):
    site_title = "矽谷商城後臺管理系統"
    # 系統名稱
    site_footer = "版權所有@矽谷商城"
    # 底部版權欄
    menu_style = "accordion"
    #  將選單欄收起來
xadmin.site.register(views.CommAdminView,GlobalSettings)

將此程式碼寫到任意一個app中的adminx.py檔案中,效果就能顯示出來

 在django-xadmin還支援對的的後臺主題的更換,設定也是非常簡單,如果我們想把背景的灰黑色替換成藍色或者綠色的等

,就只要接下來的幾步操作

class BaseSetting(object):
設定主題功能
    enable_themes = True
    use_bootswatch = True

xadmin.site.register(views.BaseAdminView, BaseSetting)

接下來我們就能對xadmin後臺的主題進行修改了,在初始各功能模組預設是一個小圓圈,我們可以通過font-awesome設定我們想要的功能模組圖示,下圖就是我設定完成的各功能模組的圖示

首先我們先找到設定圖片的程式碼,

model_icon = 'fa fa-picture-o'

這段註冊後臺圖示的程式碼是在,如圖所示

如果我們想可以新增最新版的圖示,我們從官網上下載最新版,將下載的檔案中的css和font拷貝到或替換到下圖中的標註紅色資料夾中

 接下來就就是將model_icon = 'fa fa-picture-o'中的內容替換成下圖中的紅色標註的css樣式

 model_icon = 'fa fa-address-card'新增到相對性的adminx.py中對應的類中

class GoodCategoryBrandAdmin(object):
"""
   model_icon = 'fa fa-address-card' 
"""
    

設定完成後我們就能在後臺中看到相對應model的圖示就能出現,如果我們後臺資料匯入以前第三方提供的資料或一些編寫好的測試的json格式資料,我們就可以通過以下方式整體匯入資料,首先將原始資料拷貝到相對應資料夾下

接下來在在和data同級目錄建立import_category.py檔案,在py檔案寫入函式

import os
import sys
#匯入包
filename=os.path.realpath(__file__)
#對應檔案的名字
dirname=os.path.dirname(filename)
#對應資料夾的名字
sys.path.insert(0,dirname)
#將資料夾插入
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Atigugushop.settings")
import django
django.setup()
from db_utils.data.category_data import row_data
#匯入原始資料
from goods.models import GoodsCategory
#匯入models中的類
for item in row_data:
#便利資料
    instanc1=GoodsCategory()
#例項化類
    instanc1.name=item['name']
#將遍歷的資料新增到models中的欄位中
    instanc1.code=item['code']
    instanc1.category_type=1
#標註類別為一級目錄
    instanc1.save()
#將資料儲存資料庫

    for item2 in item['sub_categorys']:
        instanc2 = GoodsCategory()
        instanc2.name = item2['name']
        instanc2.code = item2['code']
        # 指向父級目錄
        instanc2.parent_category=instanc1
        instanc2.category_type=2
        instanc2.save()
        for item3 in item2['sub_categorys']:
            instanc3 = GoodsCategory()
            instanc3.name = item3['name']
            instanc3.code = item3['code']
            instanc3.parent_category = instanc2
            instanc3.category_type=3
            instanc3.save()

接下來我們就run執行import_category檔案,注只能執行一次,如果多次run,將多次新增資料庫了。接下來就檢視資料庫中和後臺中有我們匯入的資料,下個import_product和上圖操作類似,下面是程式碼部分

import os
import sys
filename=os.path.realpath(__file__)
dirname=os.path.dirname(filename)
sys.path.insert(0,dirname)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Atigugushop.settings")
import django
django.setup()
from db_utils.data.product_data import row_data
from goods.models import Goods,GoodsCategory,GoodsImage,GoodCategoryBrand
for item in row_data:
    goods=Goods()
    goods.market_price=float(item['market_price'].replace('元','').replace('¥',''))
    goods.shop_price=float(item['sale_price'].replace('元','').replace('¥',''))
    goods.name=item['name'] if item['name'] is not None else ''
    goods.goods_desc=item['goods_desc'] if item['goods_desc'] is not None else ''
    goods.goods_brief=item['desc'] if item['desc'] is not None else ''
    category_name=item['categorys'][-1]
    categorys=GoodsCategory.objects.filter(name=category_name)
    if categorys:
        goods.category=categorys[0]
    goods.save()
    for image in item['images']:
        goods_image=GoodsImage()
        goods_image.image=image
        goods_image.goods=goods
        goods_image.save()

 補充匯入的檔案中有的是圖片,如果想讓後臺的圖片顯示出來,還需要接下來的配置,首先需在setting中配置如圖

MEDIA_URL='/media/'
# 配置xadmin顯示圖片
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
#將資料夾media加入到系統中

然後,在url中配置圖片url,這兩項配置完成後圖片就能顯示出來了

from Atigugushop.settings import  MEDIA_ROOT
urlpatterns = [
    
    url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT})
    #圖片路徑

]

上面就是xadmin 後臺的部分操作,django自帶的xadmin後臺確實很強大,用起來很方便。接下來還會繼續補充django的一些操作知識。