xadmin站點管理類

9. Xadmin

xadmin是Django的第三方擴展,比使用Django的admin站點更強大也更方便。css

文檔:https://xadmin.readthedocs.io/en/latest/index.htmlhtml

9.1. 安裝

經過以下命令安裝xadmin的最新版python

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

在配置文件中註冊以下應用git

INSTALLED_APPS = [
    ...
    'xadmin',
    'crispy_forms',
    'reversion',
    ...
]
​
# 修改使用中文界面
LANGUAGE_CODE = 'zh-Hans'# 修改時區
TIME_ZONE = 'Asia/Shanghai'

 

xadmin有創建本身的數據庫模型類,須要進行數據庫遷移github

python manage.py makemigrations
python manage.py migrate

 

在總路由中添加xadmin的路由信息數據庫

import xadmin
xadmin.autodiscover()
​
# version模塊自動註冊須要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()
​
urlpatterns = [
    path(r'xadmin/', xadmin.site.urls),
]

 

若是以前沒有建立超級用戶,須要建立,若是有了,則能夠直接使用以前的。django

python manage.py createsuperuser

 

 

9.2. 使用

  • xadmin再也不使用Django的admin.py,而是須要編寫代碼在adminx.py文件中。json

  • xadmin的站點管理類不用繼承admin.ModelAdmin,而是直接繼承object便可。bootstrap

例如:在子應用中建立adminx.py文件。後端

站點的全局配置

import xadmin
from xadmin import views
​
class BaseSetting(object):
    """xadmin的基本配置"""
    enable_themes = True  # 開啓主題切換功能
    use_bootswatch = True
​
xadmin.site.register(views.BaseAdminView, BaseSetting)
​
class GlobalSettings(object):
    """xadmin的全局配置"""
    site_title = "路飛學城"  # 設置站點標題
    site_footer = "路飛學城有限公司"  # 設置站點的頁腳
    menu_style = "accordion"  # 設置菜單摺疊
​
xadmin.site.register(views.CommAdminView, GlobalSettings) 

站點Model管理

xadmin能夠使用的頁面樣式控制基本與Django原生的admin一直。

  • list_display 控制列表展現的字段

    list_display = ['id', 'btitle', 'bread', 'bcomment']
  • search_fields 控制能夠經過搜索框搜索的字段名稱,xadmin使用的是模糊查詢

    search_fields = ['id','btitle']
  • list_filter 能夠進行過濾操做的列,對於分類、性別、狀態

    list_filter = ['is_delete']
  • ordering 默認排序的字段

  • show_detail_fields 在列表頁提供快速顯示詳情信息

  • list_editable 在列表頁能夠快速直接編輯的字段

  • refresh_times 指定列表頁的定時刷新

    refresh_times = [5, 10,30,60]  # 設置容許後端管理人員按多長時間(秒)刷新頁面
  • list_export 控制列表頁導出數據的可選格式

    list_export = ('xls', 'xml', 'json')   list_export設置爲None來禁用數據導出功能
    list_export_fields = ('id', 'btitle', 'bpub_date')
  • show_bookmarks 控制是否顯示書籤功能

    show_bookmarks = True
  • data_charts 控制顯示圖表的樣式

    data_charts = {
           "order_amount": {
             'title': '圖書發佈日期表',
             "x-field": "bpub_date",
             "y-field": ('btitle',),
             "order": ('id',)
          },
       #   支持生成多個不一樣的圖表
       #   "order_amount": {
       #     'title': '圖書發佈日期表',
       #     "x-field": "bpub_date",
       #     "y-field": ('btitle',),
       #     "order": ('id',)
       #   },
      }
    • title 控制圖標名稱

    • x-field 控制x軸字段

    • y-field 控制y軸字段,能夠是多個值

    • order 控制默認排序

  • model_icon 控制菜單的圖標【圖標的設置能夠參考bootstrap的圖標css名稱】

    class BookInfoAdmin(object):
      model_icon = 'fa fa-gift'

    xadmin.site.register(models.BookInfo, BookInfodmin)
  • readonly_fields 在編輯頁面的只讀字段

  • exclude 在編輯頁面隱藏的字段

# 在每個子應用的adminx.py文件中對xadmin站點的功能進行配置
import xadmin
from xadmin import views

class BaseSetting(object):
    """xadmin的基本配置"""
    enable_themes = True  # 開啓主題切換功能
    use_bootswatch = True # 引導控制菜單盤

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


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

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


from .models import Student
class StudentAdminModel(object):
    # 設置默認展現在列表中的字段
    list_display = ["id","name","sex","age"]
    # 設置容許用於進行搜索查詢的字段
    search_fields = ['age', 'name',"id"]
    # 過濾
    list_filter = ["age","sex"]
    # 默認排序[第一排序,第二排序字段...]
    ordering = ["-age"] # -age 表示倒序
    # 展現詳情信息的字段
    show_detail_fields = ["id"]
    # 設置容許直接在編輯頁直接編輯的字段
    list_editable = ["name","age"]
    # 設置列表頁的刷新頻率
    refresh_times = [2,3,5,10,30,60]
    # 設置導出數據格式
    list_export = ['xls', 'csv', 'json']
    # 設置是否啓用書籤功能
    show_bookmarks = True
    # 顯示圖表數據
    data_charts = {
        "age_total": {
            'title': '學生年齡段統計表',
            "x-field": 'id',
            "y-field": ('age'),
            "order": ('id',)
        },
        "age_total2": {
            'title': '學生年齡段統計表2',
            "x-field": 'id',
            "y-field": ('age'),
            "order": ('id',)
        },
    }

    # 設置自定義的模型菜單圖標
    model_icon = "fa fa-road"

    # 設置編輯頁中只讀字段
    readonly_fields = ["age"]
    # 設置咋已編輯頁隱藏的字段
    exclude = ["sex"]

xadmin.site.register(Student, StudentAdminModel)
adminx.py
相關文章
相關標籤/搜索