pythonpython一. 介紹#
xadmin是Django的第三方擴展,但是使Django的admin站點使用更方便。html
文檔:https://xadmin.readthedocs.io/en/latest/index.htmlpython
二. 安裝#
經過以下命令安裝xadmin的最新版git
pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 --default-timeout=1000
在配置文件中註冊以下應用github
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 把apps目錄設置環境變量中的導包路徑
sys.path.append(os.path.join(BASE_DIR, "apps"))
INSTALLED_APPS = [
...
'xadmin',
'crispy_forms',
'reversion',
...
]
# 修改使用中文界面
LANGUAGE_CODE = 'zh-hans'
# LANGUAGE_CODE = 'en-us'
# 修改時區
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/shanghai'
# USE_TZ = True
USE_TZ = False
xadmin有創建本身的數據庫模型類,須要進行數據庫遷移數據庫
# 其實makemigrations已經幫咱們作好了, 只須要migrate就好了
# 查看
from xadmin import migrations
# 執行如下命令
python manage.py makemigrations
python manage.py migrate
在總路由中添加xadmin的路由信息django
import xadmin
xadmin.autodiscover()
# version模塊自動註冊須要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()
urlpatterns = [
path(r'xadmin/', xadmin.site.urls)
]
建立超級用戶json
python manage.py createsuperuser
三. 使用#
- xadmin再也不使用Django的admin.py,而是須要編寫代碼在adminx.py文件中。
- xadmin的站點管理類不用繼承
admin.ModelAdmin
,而是直接繼承object
便可。
例如:在子應用中建立adminx.py文件。後端
1. 站點的全局配置#
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)
2. 站點Model管理#
xadmin可使用的頁面樣式控制基本與Django原生的admin一直。markdown
-
list_display 控制列表展現的字段app
list_display = ['id', 'btitle', 'bread', 'bcomment']
-
search_fields 控制能夠經過搜索框搜索的字段名稱,xadmin使用的是模糊查詢
search_fields = ['id','btitle']
-
list_filter 能夠進行過濾操做的列,對於分類、性別、狀態
list_filter = ['is_delete']
-
ordering 默認排序的字段
-
readonly_fields 在編輯頁面的只讀字段
-
exclude 在編輯頁面隱藏的字段
-
list_editable 在列表頁能夠快速直接編輯的字段
-
show_detail_fields 在列表頁提供快速顯示詳情信息
-
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 控制菜單的圖標
class BookInfoAdmin(object): model_icon = 'fa fa-gift' xadmin.site.register(models.BookInfo, BookInfodmin)