Django中xamin配置
首先用pipenv安装xadmin
pipenv install xadmin
下载成功之后会报错
Complete output from command python setup.py egg_info: Traceback (most recent call last): File "", line 1, in File "C:\Users\leo\AppData\Local\Temp\pip-build-thid_cll\xadmin\setup.py", line 11, in long_description=open('README.rst').read(), UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 3444: illegal multibyte sequence ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in C:\Users\leo\AppData\Local\Temp\pip-build-thid_cll\xadmin\
这是因为python3编码更改的原因,其实只是里面的一个文件有问题而已.
那么我们改用安装包来进行安装,登录github,搜索xadmin,第一个链接就是了,将其下载到我的桌面,然后打开安装包,将里面的README.rst文件删除掉,再新建一个同名空文件去替换掉.重新安装
pipenv install xadmin-master.zip
就可以安装成功了.
接下来是配置
由于后续需要对xadmin进行插件定制,需要修改源码,所以我们将下载好的zip文件中的xadmin文件夹单独拷贝出来,放到我们的项目根目录下,新建一个extra_apps(这里存放所有的第三方软件包)来存放.
然后卸载
pipenv uninstall xadmin
这么看起来,是不是觉得一开始安装只是为了安装包依赖呢.....
接下来在项目的setting中进行配置,先将xadmin import到settings中,在INSTALL_APP下新增两个项目,分别是"xadmin"和""crispy_forms""(注意此处是将原本的中划线改成了下划线).
如果原本在app中的admin.py中已经进行了原系统的admin配置,此时注释掉配置代码即可.
之后在系统的url文件中import xadmin,将原先url字典中的admin改为xadmin,后面的方法也是一样修改,以后访问admin/地址就会失效了,需要改为xadmin/.当然也可以不该url,只改动后面的视图函数,那么输入admin/直接跳转到xadmin后台,好像更不错.
然后在终端下运行
python3 manage.py makemigrations
python3 manage.py migrate
将xadmin下的表在数据库中生成
基本配置到这里就结束了
然后是将自己django中的app都注册进去
在每个app下新建一个adminx.py,不是xadmin.py
里面写入如下内容
import xadmin # 不是adminx
from .models import EmailVerifyRecord, Banner
class EmailVerifyRecordAdmin(object):
list_display = ("code", "email", "send_type", "send_time") # 设置进行展示的字段列表
search_fields = ("code", "email", "send_type", "send_time") # 设置进行查询的字段列表
list_filter = ("code", "email", "send_type", "send_time") # 设置进行过滤查看的字段列表
xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin) # 将model注册到xadmin中
同一个app下面的model都写入此文件中,user不用,已经默认添加了.
配置完成以后,重新运行makemigrations xadmin 和 migrate xadmin,此时就可以生效了.
设置后台的标题,页脚和菜单.
在users这个app下的adminx.py文件中,加入以下内容
class GlobalSetting(object):
site_title = "慕学后台管理系统" #设置网站标题
site_footer = "慕学在线网" # 设置页脚
menu_style = "accordion" #将菜单设置为下拉菜单
xadmin.site.register(views.CommAdminView, GlobalSetting) # 将配置运行到后台系统之中去
激活后台的主题,并收起左侧菜单
在users这个app下的adminx.py文件中,加入以下内容
from xadmin import views
class BaseSetting(object):
enable_themes = True #这是激活网页的主题功能
use_bootswatch = True # 激活后可以下载各式主题
xadmin.site.register(views.BaseAdminView, BaseSetting) #将功能应用后台网页中
修改后台系统的app显示名称
打开每个app下面的apps.py文件,可以看到
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
verbose_name = "用户信息" # 这是后面添加的,主要就是将verbose_name加入进去
然后在当前目录的__init__.py文件中,加入以下内容
default_app_config = "users.apps.UsersConfig" # 加载app的样式,内容是appname.apps.ClassName
关于xadmin中修改记录时,已经存在的图片数据无法加载,需要重新指定图片才可以成功保存的问题:
这个并不是bug,而是模型上会默认该值是必填的,想要允许它不设置还能保留原来的值,你可以在你的模型上添加 blank=True
的选项。答案来自https://segmentfault.com/q/1010000015618797/a-1020000015623226/1010000015618797/a-1020000015623226