第5章 通過xadmin快速搭建後臺管理系統
阿新 • • 發佈:2019-01-09
本章主要內容:
- 通過xadmin結合第4章設計的model快速的搭建一套完整的後臺管理系統;
- 本章首先介紹django admin的簡單使用, 然後引出xadmin,在安裝xadmin之後將model註冊到xadmin中, 最後完成xadmin的全域性配置
django admin 的簡單使用
- 更改語言和時區
在settings中更改
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai' # 時區
USE_TZ = False # 使用本地時間,而不是UTC時間
- 註冊模型
- 簡單操作
更加強大的xadmin
pip install xadmin
原始碼安裝(最新,新特性)
將xadmin註冊到settings中
'xadmin',
'crispy_forms',
- 修改專案的urls.py,替換預設的admin
import xadmin
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
]
- 設定pycharm檔案模板
- 在每個app中新建adminx.py檔案,在此處註冊app的model
- list_display 展示
- search_fields 搜尋
- list_filter 過濾
# -*- coding: utf-8 -*-
__author__ = 'bobby'
__date__ = '2016/10/25 21:07'
import xadmin
from xadmin import views
from xadmin.plugins.auth import UserAdmin
from xadmin.layout import Fieldset, Main, Side, Row
from django.utils.translation import ugettext as _
from .models import EmailVerifyRecord, Banner, UserProfile
class UserProfileAdmin(UserAdmin):
def get_form_layout(self):
if self.org_obj:
self.form_layout = (
Main(
Fieldset('',
'username', 'password',
css_class='unsort no_title'
),
Fieldset(_('Personal info'),
Row('first_name', 'last_name'),
'email'
),
Fieldset(_('Permissions'),
'groups', 'user_permissions'
),
Fieldset(_('Important dates'),
'last_login', 'date_joined'
),
),
Side(
Fieldset(_('Status'),
'is_active', 'is_staff', 'is_superuser',
),
)
)
return super(UserAdmin, self).get_form_layout()
class BaseSetting(object):
enable_themes = True
use_bootswatch = True
class GlobalSettings(object):
site_title = "慕學後臺管理系統"
site_footer = "慕學線上網"
# menu_style = "accordion"
class EmailVerifyRecordAdmin(object):
list_display = ['code', 'email', 'send_type', 'send_time']
search_fields = ['code', 'email', 'send_type']
list_filter = ['code', 'email', 'send_type', 'send_time']
model_icon = 'fa fa-address-book-o'
class BannerAdmin(object):
list_display = ['title', 'image', 'url', 'index', 'add_time']
search_fields = ['title', 'image', 'url', 'index']
list_filter = ['title', 'image', 'url', 'index', 'add_time']
# from django.contrib.auth.models import User
# xadmin.site.unregister(User)
xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)
xadmin.site.register(Banner, BannerAdmin)
# xadmin.site.register(UserProfile, UserProfileAdmin)
xadmin.site.register(views.BaseAdminView, BaseSetting)
xadmin.site.register(views.CommAdminView, GlobalSettings)
xadmin的全域性配置
- users 的adminx.py裡面
from xadmin import views
# 基本的修改
class BaseSetting(object):
enable_themes = True # 開啟主題功能
use_bootswatch = True #
# 針對全域性的
class GlobalSettings(object):
site_title = "慕學後臺管理系統" # 系統名稱
site_footer = "慕學線上網" # 底部版權欄
# menu_style = "accordion" # 將選單欄收起來
# 註冊,注意一個是BaseAdminView,一個是CommAdminView
xadmin.site.register(views.BaseAdminView, BaseSetting)
xadmin.site.register(views.CommAdminView, GlobalSettings)
- 修改選單欄的名稱,需要修改兩個地方
- 最終結果