1. 程式人生 > 實用技巧 >xadmin的安裝和基本使用方法

xadmin的安裝和基本使用方法

Django-xadmin的介紹 > `Django`是`python`的重量級web框架,寫得少,做得多,非常適合後端開發,它很大的一個亮點是,自帶後臺管理模組,但它自帶的後臺管理有點醜,而`Xadmin`是基於`bootstrap`開發的一套後臺管理框架,介面非常美觀,只需幾步就可以替換自帶的`Django_admin` 具體的安裝步驟 1. xadmin在python2.x時代的安裝方法

在python2.x時代,安裝xadmin是通過如下命令

pip install xadmin

2.xadminpython3.6.x時代的安裝方法

需要安裝如下的包

pip3 install django-import-export
pip3 install django-reversion
pip3 install django-formtools==2.1
pip3 install future
pip3 install httplib2
pip3 install six
pip3 install django-crispy-forms

2.1 下載xadmin

https://github.com/sshwsfc/xadmin

2.2、解壓縮,得到xadmin資料夾,複製到專案的extra_apps,解壓縮,得到xadmin資料夾, 如下圖所示:

2.3、在django中的根目錄下建立Python Package,命名為extra_apps(如果不存在此資料夾則建立, 然後 滑鼠右鍵extra_app 隨後 mark as sources root
Python Package是帶init檔案的,跟普通Package不同)

建立完extra_apps,需要在settings中配置一下extra_apps。設定為可搜尋的路徑

import os
import sys

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps')) # 把extra_apps資料夾新增到搜尋目錄中

2.4、把xadmin資料夾複製到extra_apps

2.5、xadmin的配置

配置到 INSTALLED_APPS


## 顯示中文
# Application definition
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
 
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'xadmin',
    'crispy_forms', # 注意crispy_forms之間是下劃線隔開,不是橫線
]

2.6、修改urls.pyadmin

import xadmin
from django.conf.urls import url
from django.contrib import admin

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

2.7、遷移檔案

python3 manage.py makemigrations
python3 manage.py migrate

遷移完成後,我們看到資料庫多了幾張表

2.8、pycharm建立superuser 使用者

python3 manage.py makemigrations
python3 manage.py migrate

至此完成。

如果報錯,請先把原先舊的app裡面admin.py裡面的註冊程式碼去掉,再試試

執行一下專案,訪問

http://127.0.0.1:8000/xadmin/

xadmin的使用

1.需要在app中建立adminx.py檔案

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)

3.資料匯出
如果想要匯出Excel資料,需要安裝xlwt

預設情況下,xadmin會提供ExcelCSV,XMLjson四種格式的資料匯出,可以通過設定OptionClasslist_export屬性來指定使用哪些匯出格式(四種格式分別用xlscsvxmljson表示)或是將list_export設定為None來禁用資料匯出功能

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

4.設定全域性的配置

# 全域性修改,固定寫法
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)

  1. 圖表顯示
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"}
            }
        }
    }
  1. 註冊模型與對應的管理類
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)