xadmin是基于Django的admin开发的更完善的后台管理系统,基于Bootstrap开发,拥有更*化的页面管理。
起步
安装xadmin,下载地址:https://github.com/sshwsfc/xadmin,下载后进入文件夹内,按shift+右键,选择在此处打开命令窗口,输入python setup.py install 安装xadmin,安装时会自动下载依赖包,等待下载完成
安装好之后,打开Django项目,在settings文件中,配置xadmin的相关app注册,下图中选中部分。
在项目的urls.py中配置xadmin的路由
然后依次执行makemigrations,migrate创建数据库-
更改settings配置,可显示中文
LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True # 不使用国际时间 USE_TZ = False
执行createsuperuser –username 用户名 创建管理员账户,使用创建的用户登录后台界面
至此,网站后台就搭建完成了,xadmin所使用的各种依赖包也有了
应用
下面将使用源码安装的方式将xadmin集成到Django项目中,这样更加方便管理和修改源码,将xadmin复制一份,粘贴到已有的Django项目目录下。
为了方便管理,可以创建一个apps文件夹和extra文件夹(当然,名称可以自定义),将自定义的app放进apps统一管理,另外将xadmin等第三方app放到另外的目录下,并设置可搜索路径,这样做会让项目的结构更加清晰,设置完成之后,卸载之前通过pip安装的xadmin。
卸载完成后,重新启动项目,访问http://127.0.0.1:8000/xadmin/ 依然可以访问即可
1. 配置xadmin后台
这里是xadmin的实际应用。
(1)在app下创建adminx.py文件,xadmin的数据表注册会到app下的adminx.py文件中查找。
编辑adminx.py文件:
例:
import xadmin
class BlogAdmin():
# 在后台展示的字段
list_display = ['title', 'keep_num', 'poll_num', 'look_num']
# 可用来做搜索条件的字段(不用时间格式的字段)
search_fields = ['title']
# 用时间格式的字段做过滤器筛选字段
list_filter = ['create_time']
# 设置可以在列表中直接修改的字段
list_editable = ['title', 'look_num']
# 设置自动刷新
refresh_times = [5, 7]
# 配置插件效果
style_fields = {'content': 'ueditor'}
#与相关数据模型关联
xadmin.site.register(BlogModel, BlogAdmin) # 这里注意,用户表是不需要这一步的
注意:和之前admin的区别,下面的代码差异不大,但在声明类时不再继承admin.ModelAdmin
(2)外键字段设置
如果一个表中的一个字段,通过外键关联了另外一张表,那么主表的str函数返回的字段值,就是外键字段在后台管理中的可选值。
class CategoryModel(models.Model):
cate_name = models.CharField(max_length=20, unique=True)
class Meta:
db_table = 'categories'
verbose_name = '博客分类'
verbose_name_plural = verbose_name
def __str__(self):
return self.cate_name
建议设置这个,否则随着数据的增加在后台你会傻傻分不清。
2. Xadmin的全局配置(可选)
这里的配置只是一些样式效果,实际意义不大
1. xadmin的主题配置,在任意app下的adminx.py后台注册文件设置一次即可
from xadmin.views import BaseAdminView, CommAdminView
import xadmin
#主题
class ThemeSetting(object):
enable_themes = True
use_bootswatch = True
#绑定到xadmin的views.BaseAdminView
xadmin.site.register(BaseAdminView, ThemeSetting)
2. 头部系统名称和底部版权及导航折叠设置,同样到app下的adminx.py中进行配置
class CustomView(object):
site_title = '后台管理' # 网页头部导航
site_footer = '暂无' # 底部版权内容
menu_style = 'accordion' # 左侧导航折叠框
xadmin.site.register(CommAdminView, CustomView)
3. 左侧导航栏名称
app设置为中文名称,找到app下的apps.py文件
找到当前app的init.py文件,配置app中文名称设置类的路径
其他配置
-
设置当前app中的某个字段为只读,不能修改,找到当前的app中的adminx.py文件
readonly_field = ['title']
-
设置后台某个字段的排序规则(加负号为倒序)
ordering = ['-add_time']
-
设置后台列表页面可以直接修改字段内容,找到app下的adminx.py文件
list_editable = ['字段名1','字段名2’...]
-
设置后台列表页面,设置自动刷新,这是一个插件,在xadmin/plugins/refresh.py中
找到app下的adminx.py文件refresh_times = [5,7]