xadmin安装
使用的是django3,所以下载对应版本的xadmin
pip install git+https://github.com/sshwsfc/xadmin.git@django2
配置settings.py
# 添加以下三个appINSTALLED_APPS = ['xadmin','crispy_forms','reversion',]
配置路由
import xadminurlpatterns = [path(r'xadmin/', xadmin.site.urls)
创建数据库并创建超级管理员
python manage.py makemigrationspython manage.py migratepython manage.py createsuperuser
同步静态文件
python manage.py collectstatic
如有设置了静态文件目录,同步静态文件到本地需要做一下修改:
# 以下三行代码在同步静态文件时注释STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)MEDIA_URL = '/media/' # 设置文件上传路径,图片上传、文件上传目录MEDIA_ROOT = os.path.join(BASE_DIR, 'media')# STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 同步静态文件时去掉注释
个性化管理员站点
xadmin要和admin一样可以在后台编辑管理表的数据,需在admin.py的同级目录新建adminx.py文件。
- import xadmin
- admin继承admin.ModelAdmin, xadmin则继承object。
- 只能通过xadmin.site.register(表类名, xxx)方式注册
```python
adminx.py
import xadmin from .models import BlogArticles
class BlogArticlesAdmin(object): list_display = (“title”, “author”, “publish”) list_filter = (“publish”, “author”) search_fields = (“title”, “body”) raw_id_fields = (“author”,) date_hierarchy = “publish” ordering = [“-publish”, ‘author’]
注册BlogArticles表,关联BlogArticlesAdmin
xadmin.site.register(BlogArticles, BlogArticlesAdmin)
<a name="eW4xu"></a>### xadmin全局配置```pythonimport xadminfrom xadmin import viewsclass BaseSetting(object):# 支持设置不同主题enable_themes = Trueuse_bootswatch = Truexadmin.site.register(views.BaseAdminView, BaseSetting)class GlobalSettings(object):site_title = '博客后台管理平台' # 设置站点标题site_footer = 'ZayGee自研' # 设置站点页脚menu_style = "accordion" # 设置菜单可折叠xadmin.site.register(views.CommAdminView, GlobalSettings)
效果图如下:
设置应用名称显示为中文
# 应用account下的apps.py文件from django.apps import AppConfigclass AccountConfig(AppConfig):name = 'account'verbose_name = '账号信息'#应用account下的__init__.py 文件default_app_config = "account.apps.AccountConfig"
xadmin汉化不完整的解决办法
setttings.py文件配置翻译文件所在目录
LOCALE_PATHS = [os.path.join(BASE_DIR, 'extra_apps', 'xadmin', 'locale')] # 配置翻译文件目录
编译翻译包
django-admin compilemessages
设置语言为中文并开启国际化 ```python LANGUAGE_CODE = ‘zh-Hans’
TIME_ZONE = ‘UTC’
TIME_ZONE = ‘Asia/Shanghai’
USE_I18N = True
USE_L10N = True
<a name="JH5SR"></a>#### 添加小组件失败解决<br />进入文件:xadmin/views/dashboard.py,修改第36行如下:```pythondef render(self, name, value, attrs=None, renderer=None)
自定义菜单项
重写xadmin的CommAdminView类下的get_site_menu方法,并返回一个list。
title: 显示的菜单项icon: 显示Font Awesome图标,可以在官网上找http://www.fontawesome.com.cn/menus:多个字典组成的元组 ({},{})url: self.get_model_url(model, "changelist") # model为具体定义的模型类# CommAdminView类部分源码如下:def get_site_menu(self):return None@filter_hookdef get_nav_menu(self):site_menu = list(self.get_site_menu() or [])had_urls = []def get_url(menu, had_urls):if 'url' in menu:had_urls.append(menu['url'])if 'menus' in menu:for m in menu['menus']:get_url(m, had_urls)get_url({'menus': site_menu}, had_urls)nav_menu = OrderedDict()for model, model_admin in self.admin_site._registry.items():if getattr(model_admin, 'hidden_menu', False):continueapp_label = model._meta.app_labelapp_icon = Nonemodel_dict = {'title': smart_text(capfirst(model._meta.verbose_name_plural)),'url': self.get_model_url(model, "changelist"),'icon': self.get_model_icon(model),'perm': self.get_model_perm(model, 'view'),'order': model_admin.order,}
在某个应用的adminx.py文件下:
import xadminfrom account.models import UserProfilefrom xadmin import views# 导入需要管理的数据库表from .models import Moment, Banner, Category, Tag, Recommended, Article, Link, BlogArticlesclass BaseSetting(object):# 支持设置不同主题enable_themes = Trueuse_bootswatch = Truexadmin.site.register(views.BaseAdminView, BaseSetting)class GlobalSettings(object):site_title = '博客后台管理平台' # 设置站点标题site_footer = 'ZayGee自研' # 设置站点页脚menu_style = "accordion" # 设置菜单可折叠def get_site_menu(self):return [{'title': '用户管理','icon': 'fa fa-book','menus': ({'title': '账号设置','icon': 'fa fa-bug','url': self.get_model_url(UserProfile, 'changelist')},)},{'title': '博客管理','icon': 'fa fa-book','menus': ({'title': '博客文章','icon': 'fa fa-bug','url': self.get_model_url(BlogArticles, 'changelist')},{'title': '文章','icon': 'fa fa-bug','url': self.get_model_url(Article, 'changelist')},{'title': '记录时刻','icon': 'fa fa-bug','url': self.get_model_url(Moment, 'changelist')},{'title': '轮播图','icon': 'fa fa-bug','url': self.get_model_url(Banner, 'changelist')},{'title': '博客分类','icon': 'fa fa-bug','url': self.get_model_url(Category, 'changelist')},{'title': '文章标签','icon': 'fa fa-bug','url': self.get_model_url(Tag, 'changelist')},{'title': '推荐位','icon': 'fa fa-bug','url': self.get_model_url(Recommended, 'changelist')},{'title': '友情链接','icon': 'fa fa-bug','url': self.get_model_url(Link, 'changelist')},)},]xadmin.site.register(views.CommAdminView, GlobalSettings) # 注册

