Django的Xadmin使用

Django Xadmin

一般在實際的開發當中, 除了先後端分離的項目, 還有一些先後端不分離的項目, 這樣咱們在訪問不分離的頁面的時候, 就能夠經過Django自帶的admin管理模塊來輕鬆實現後臺管理, 可是因爲你的審美要求較高咋辦呢? 自帶admin後臺實在是太難看了, 也太難用了, 因而乎Xadmin就基於Django的admin開發了一個新的後臺管理, 不只融合了admin的快速組成員管理, 還基於Bootstrap美化了界面, 還有更多圖標顯示等你來發崛css

undefined

Django Xadmin中文文檔html

Djanog Xadmin Github傳送門vue

**小知識點:**若是是先後端不分離的項目, 也是能夠借用其餘的admin客戶端, 好比Vue有一個 vue-element-admin 也十分好看python

安裝:切換到虛擬環境下

pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2

註冊app

INSTALLED_APPS = [
    # ...
    # xamin主體模塊
    'xadmin',
    # 渲染表格模塊
    'crispy_forms',
    # 爲模型經過版本控制,能夠回滾數據
    'reversion',
]

Xadmin數據庫遷移

xadmin:須要本身的數據庫模型類,完成數據庫遷移, 遷移以後就會多出相對應的xadmin表linux

>: python manage.py migrate

undefined

設置Xadmin路由

設置主路由替換掉admin:主urls.pygit

# xadmin的依賴
import xadmin
xadmin.autodiscover()
# xversion模塊自動註冊須要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()

urlpatterns = [
    # 用Xadmin後臺替換原生的admin後臺
    path(r'xadmin/', xadmin.site.urls),
]

建立超級用戶

建立超級用戶:外層luffyapi路徑終端github

>: python manage.py createsuperuser
帳號密碼設置:admin | admin

完成全局美化配置

完成xadmin全局配置:新建home/adminx.py數據庫

# home/adminx.py
# xadmin全局配置
import xadmin
from xadmin import views

class GlobalSettings(object):
    """xadmin的全局配置"""
    site_title = "路飛學城"  # 設置站點標題
    site_footer = "路飛學城有限公司"  # 設置站點的頁腳
    menu_style = "accordion"  # 設置菜單摺疊

xadmin.site.register(views.CommAdminView, GlobalSettings)

註冊相應的字段以及Xadmin

在adminx.py中註冊model:home/adminx.px

from . import models
# 註冊
xadmin.site.register(models.Banner)

修改app:home的名字:xadmin頁面上的顯示效果

# home/__init__.py
default_app_config = "home.apps.HomeConfig"

# home/apps.py
from django.apps import AppConfig
class HomeConfig(AppConfig):
    name = 'home'
    verbose_name = '個人首頁'

xadmin的使用

1.須要在app中建立adminx.py文件django

import xadmin
from repository import models
from xadmin import views

class UserProfileAdmin(object):
	# 顯示的字段名稱
    list_display = ['id','name' ,'email','phone','mobile']
	
	# 搜索時可輸入的字段內容
    search_fields = ['id', 'name', 'email', 'phone']
    
    # 點擊id可進入詳細界面進行編輯(默認的)
    list_display_links = ('id',)  
    
    # 可編輯的列名
    list_editable = ['name' ,'email','phone','mobile']
    # list_filter = ['name' ,'email','phone','mobile']
	
	# 每頁顯示多少條
	list_per_page = 20 
	
	#根據id排序 
    ordering = ('id',) 
     
    #設置只讀字段 
    readonly_fields = ('user_email',) 
    
    #顯示本條數據的全部信息
    show_detail_fields = ['asset_name'] 

xadmin.site.register(models.UserProfile,UserProfileAdmin)

2.數據導出 若是想要導出Excel數據,須要安裝xlwtjson

默認狀況下,xadmin會提供ExcelCSV,XMLjson四種格式的數據導出,能夠經過設置OptionClasslist_export屬性來指定使用哪些導出格式(四種格式分別用xlscsvxmljson表示)或是將list_export設置爲None來禁用數據導出功能

list_export = ('xls', 'xml', 'json')
list_export_fields = ('id', 'name', 'title')

3.設置全局的配置

# 全局修改,固定寫法
class GlobalSettings(object):
    # 修改title
    site_title = 'xxx後臺管理界面'
    # 修改footer
    site_footer = 'xxx的公司'
    # 收起菜單
    menu_style = 'accordion'
	
	# 設置 models圖標
    # https://v3.bootcss.com/components/
    # http://www.yeahzan.com/fa/facss.html
	global_search_models = [models.Disk, models.Server]
    global_models_icon = {
        # Server: "glyphicon glyphicon-tree-conifer", Pool: "fa fa-cloud"
        models.Server: "fa fa-linux", models.Disk: "fa fa-cloud"
    }


# 將title和footer信息進行註冊
xadmin.site.register(views.CommAdminView,GlobalSettings)

4.圖表顯示

data_charts = {
        "host_service_type_counts": {
            'title': '部門機器使用狀況',
            'x-field': "business_unit",
            'y-field': ("business_unit"),
            'option': {
                "series": {"bars": {"align": "center", "barWidth": 0.8, "show": True}},
                "xaxis": {"aggregate": "count", "mode": "categories"}
            },
        },
        "host_idc_counts": {
            'title': '機房統計',
            'x-field': "idc",
            'y-field': ("idc",),
            'option': {
                "series": {"bars": {"align": "center", "barWidth": 0.3, "show": True}},
                "xaxis": {"aggregate": "count", "mode": "categories"}
            }
        }
    }

5.註冊模型與對應的管理類

xadmin.site.register(models.Disk, DiskAdmin)
xadmin.site.register(models.Server, ServerAdmin)
xadmin.site.register(models.IDC, IDCAdmin)
xadmin.site.register(models.UserProfile, UserProfileAdmin)
xadmin.site.register(models.UserGroup, UserGroupAdmin)
相關文章
相關標籤/搜索