drf之Xadmin使用


一 Xadmin的使用

xadmin是Django的第三方擴展,可是使Django的admin站點使用更方便。

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

1.1 安裝

通過如下命令安裝xadmin的最新版

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

在配置文件中注冊如下應用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 把apps目錄設置環境變量中的導包路徑
sys.path.append( os.path.join(BASE_DIR,"luffy/apps") )


INSTALLED_APPS = [
...
'xadmin',
'crispy_forms',
'reversion',
...
]

# 修改使用中文界面
LANGUAGE_CODE = 'zh-Hans'

# 修改時區
TIME_ZONE = 'Asia/Shanghai'

xadmin有建立自己的數據庫模型類,需要進行數據庫遷移

1
2
python manage.py makemigrations
python manage.py migrate

在總路由中添加xadmin的路由信息

1
2
3
4
5
6
7
8
9
10
import xadmin
xadmin.autodiscover()

# version模塊自動注冊需要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()

urlpatterns = [
path(r'xadmin/', xadmin.site.urls)
]

創建超級用戶

1
python manage.py createsuperuser

1.2 使用

  • xadmin不再使用Django的admin.py,而是需要編寫代碼在adminx.py文件中。
  • xadmin的站點管理類不用繼承admin.ModelAdmin,而是直接繼承object即可。

例如:在子應用中創建adminx.py文件。

1.2.1 站點的全局配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import xadmin
from xadmin import views

class BaseSetting(object):
"""xadmin的基本配置"""
enable_themes = True # 開啟主題切換功能
use_bootswatch = True

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

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

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

1.2.2 站點Model管理

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

  • list_display 控制列表展示的字段

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

    1
    search_fields = ['id','btitle']
  • list_filter 可以進行過濾操作的列,對於分類、性別、狀態

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

  • readonly_fields 在編輯頁面的只讀字段

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

  • list_editable 在列表頁可以快速直接編輯的字段

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

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

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

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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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 控制菜單的圖標

    1
    2
    3
    4
    classBookInfoAdmin(object):
    model_icon = 'fa fa-gift'

    xadmin.site.register(models.BookInfo, BookInfodmin)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM