django2 xadmin 安装和使用

官方文档:https://xadmin.readthedocs.io/en/docs-chinese/

源码安装部署

下载源码:https://github.com/sshwsfc/xadmin/tree/django2
初步配置
1.在建好的Django目录下新建一个extra_apps文件夹
2.解压下载好的源码文件,将其中的xadmin文件夹放到extra_apps中
3.右键选中extra_apps,选择Make Directory as 中的Sources Root
4.在settings.py中添加配置如下
import sys
sys.path.insert(0, os.path.join(BASE_DIR,“extra_apps”))

5.在urls.py中修改配置如下,注释掉之前admin的配置

#from django.contrib import admin
import xadmin
urlpatterns = [
    #path('admin/', admin.site.urls),
    path('xadmin/', xadmin.site.urls),
]

6.迁移数据库

python manage.py makemigrations
python manage.py migrate

7.安装过程中可能会遇到的问题
报错一、

ModuleNotFoundError: No module named 'future'

缺少future包,命令行安装

pip install future
pip install six
pip install django_import_export

报错二、

ModuleNotFoundError: No module named 'crispy_forms'

命令行安装

pip install django-crispy-forms

报错三、

ModuleNotFoundError: No module named 'reversion'

命令行安装

pip install django-reversion

报错四、

ModuleNotFoundError: No module named 'django.contrib.formtools'

安装升级

pip install django-formtools==2.1

报错五、

ModuleNotFoundError: No module named 'httplib2'

安装

pip install httplib2

报错六

django.db.utils.InternalError: (1071, 'Specified key was too long; max key length is 1000 bytes')

原因是数据库保存索引字段做大限制, 本例是因为已经创建多个数据表,总和超过了1000导致报错,解决办法是分别将每个应用的模型做数据迁移,避免一次性超过限制大小而报错。
8.数据库配好之后,运行项目,出现如下结果,则表示配置成功。
在这里插入图片描述
9.创建超级用户,设置用户名密码

python manage.py createsuperuser

在这里插入图片描述后台进行登录之后报如下错误
在这里插入图片描述
报错原因在settings.py中

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.users.apps.UsersConfig',
    'apps.operations.apps.OperationsConfig',
    'apps.courses.apps.CoursesConfig',
    'apps.orgs.apps.OrgsConfig',
    'xadmin',
    'crispy_forms',
    'reversion',
]

‘django.contrib.sessions.middleware.SessionMiddleware’,
‘django.contrib.sessions’,
默认配置中使用session作为后台数据存储 ,故django_session数据表也是必须的,否则报错。
在setting.py同目录下的__init__.py中添加如下命令,然后重新执行上面的迁移表命令:

import pymysql
pymysql.install_as_MySQLdb()

发现无法解决上面的问题,修改迁移数据步骤

1.注释掉之前关于xadmin在settings.py和urls.py中的配置
在这里插入图片描述
-
2.删除掉之前的表和migrations中除__init__.py之外的其他文件,使用上面的迁移命令,用admin进行迁移数据。此时是官方配置,故无兼容性问题,你会看到生成的表中有django_session。
在这里插入图片描述
3.创建超级用户登录
在这里插入图片描述4.去掉之前对xadmin相关配置的注释 , 此时浏览器访问 localhost:8000/xadmin/ 无法登录后台, 提示相关表不存在,需要进行数据迁移操作生成数据表。
注意:
不可删除之前生成的数据表,否则将出现无法创建django_session表的情况 , 并且如果之后需要添加数据表,尽量不要批量进行数据迁移操作, 而是分开单个应用进行数据迁移操作。
在这里插入图片描述5.打开Tools–>Run manage.py task执行下面的命令

makemigrations xadmin
migrate xadmin

在这里插入图片描述
创建成功, 在数据库中可查看到xadmin_前缀的数据表。
在这里插入图片描述
6.重启项目,浏览器登录后台localhost:8000/xadmin即可
在这里插入图片描述

后台显示数据表

1.在各个app下创建adminx.py文件代替原来的admin.py文件
2.确保各app下模型已经创建,然后编写adminx文件

import xadmin
from .models import CourseInfo,LessonInfo,VideoInfo,SourceInfo
from xadmin import views
#主题配置
class BaseXadminSetting(object):
    enable_themes = True
    use_bootswatch = True
#头部尾部配置
class CommXadminSetting(object):
    site_title = '星海教育后台管理系统'
    site_footer = '星海公司'
    #菜单栏配置
	menu_style = 'accordion'
	
# Create your models here.
class CourseInfoXadmin(object):
    list_display = ['image','name','study_time','study_num','level','love_num','click_num','desc','detail','category','course_notice','course_need','teacher_tell','add_time']
    #图标配置
    model_icon = 'fa fa-tasks'

class LessonInfoXadmin(object):
    list_display = ['name', 'courseinfo', 'add_time']
    model_icon = 'fa fa-ticket'

class VideoInfoXadmin(object):
    list_display = ['name', 'study_time', 'url','lessoninfo','add_time']
    #搜索框
    search_fields = ['name']
    #过滤器
	list_filter = ['name']
	model_icon = 'fa fa-video-camera'

class SourceInfoXadmin(object):
    list_display = ['name', 'down_load', 'courseinfo', 'add_time']
    model_icon = 'fa fa-folder-open-o'

xadmin.site.register(CourseInfo,CourseInfoXadmin)
xadmin.site.register(LessonInfo,LessonInfoXadmin)
xadmin.site.register(VideoInfo,VideoInfoXadmin)
xadmin.site.register(SourceInfo,SourceInfoXadmin)
#注册xadmin的主题
xadmin.site.register(views.BaseAdminView,BaseXadminSetting)
#注册xadmin的标题和底部公司名称
xadmin.site.register(views.CommAdminView,CommXadminSetting)

3.重启服务,刷新后台页面,就可以看到相关表创建好了
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值