一、序言:
Python 做后台,用 Django 最方便了,但是 django 自带的 admin 的后台管理模块很丑,功能也不齐全;不要发愁,大神已经给我们集成好了一个叫 xadmin 的后台,可自定义主题,我们拿来用即可。。。
但是 现在 django 已经升级到 2.1 版本了,xadmin 在兼容性上貌似更不上了,相信用到的朋友都会遇到不少坑!
今天就把我遇到的一些坑
以及解决方法
分享给大家 !!!
好文章 记得收藏+点赞+关注额 !!!---- Nick.Peng
二、常见的坑及解决方法:
-
安装方法: 这里不再赘述,Github上讲解的很详细;
-
Xadmin Github地址: https://github.com/sshwsfc/xadmin
-
异常一:django2.0把from django.core.urlresolvers修改成了django.urls
- 异常信息:
ModuleNotFoundError: No module named 'django.core.urlresolvers'
- 解决方案:
修改:site-packages\xadmin-0.6.1-py3.6.egg\xadmin\models.py
将:from django.core.urlresolvers import NoReverseMatch, reverse
修改为:from django.urls import NoReverseMatch, reverse
- 异常信息:
-
异常二:django2.1.1中需要给外键指定on_delete参数
- 异常信息:
TypeError: __init__() missing 1 required positional argument: 'on_delete'
- 解决方案:
把:content_type = models.ForeignKey(ContentType)
修改为:content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE)
- 异常信息:
-
异常三:django2.1.1的 forms表单初始化仅一个参数
- 异常信息:
TypeError: __init__() takes 1 positional argument but 6 were given
- 解决方案:
把:forms.Field.init(self, required, widget, label, initial, help_text, *args, **kwargs)
修改为:forms.Field.init(self)
- 异常信息:
-
异常四:Settings缺少MIDDLEWARE_CLASSES属性,django2.1.1把MIDDLEWARE_ClASSES改成MIDDLEWARE了
- 异常信息:
AttributeError: 'Settings' object has no attribute 'MIDDLEWARE_CLASSES'
- 解决方案:
把:
if settings.LANGUAGES and ‘django.middleware.locale.LocaleMiddleware’ in settings.MIDDLEWARE_ClASSES:
修改为:
if settings.LANGUAGES and ‘django.middleware.locale.LocaleMiddleware’ in settings.MIDDLEWARE:
- 异常信息:
-
异常五:django-formtools导入失败,需要更新django-formtools了
- 异常信息:
ModuleNotFoundError: No module named 'django.contrib.formtools'
- 解决方案:
卸载:pip uninstall django-formtools
安装:pip install django-formtools==2.1
- 异常信息:
-
异常六:提示导入QUERY_TERMS报错
- 异常信息:
ImportError: cannot import name 'QUERY_TERMS'
- 解决方案:
在Django2.0版本中:
把:from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS
修改为:
from django.db.models.sql.query import LOOKUP_SEP
from django.db.models.sql.constants import QUERY_TERMS
在Django2.1.1版本中:
把:from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS
修改为:from django.db.models.sql.query import LOOKUP_SEP, Query
- 异常信息:
-
异常七:提示导入auth.views错误
- 异常信息:
ImportError:cannot import name password_reset——confirm from django.contrib.auth.views
- 解决方案:
把xadmin\plugins\password.py中的
from django.contrib.auth.views import password_reset_confirm
修改为:
from django.contrib.auth.views import PasswordResetConfirmView
- 异常信息: