您的位置:首页 > 编程语言 > Go语言

Django2.1.7+Xadmin0.6.1集成Xadmin报错解决办法

2020-01-15 08:18 1706 查看

文章目录

Django2.1.7+Xadmin2.0.1集成Xadmin报错解决办法

django默认是有一个admin的后台管理模块,功能不齐全,现成的xadmin后台,拿来即用,但django已经升级到2.x版本了,xadmin更新缓慢,针对于在集成过程中出现的问题,把相应出错的地方替换即可。

项目配置

1、**xadmin压缩包地址:**

安装

1.1虚拟环境中用pip 安装下载的压缩包(方法一)

pip install D:\xadmin-django2.zip

对xadmin做一些定制化开发,推荐把xadmin源码添加到项目中

在项目中新建一个目录extra_apps,解压先前下载的 xadmin-django2.zip,拷贝里面的xadmin整个文件夹到extra_apps中,然后直接跳转到settings.py中进行配置

1.2、在项目中我们可能需要对xadmin做一些定制化开发,推荐把xadmin源码添加到项目中(方法二)

  • 在项目中新建一个目录extra_apps,解压先前下载的 xadmin-django2.zip
  • 虚拟环境进入该解压文件,执行:
python setup.py install
  • 最后,拷贝里面的xadmin整个文件夹到extra_apps中,如下图:

我们用到的是xadmin文件夹,将xadmin复制到项目的extra_apps目录。

安装依赖库:
激活项目的虚拟环境,cd 到解压的 xadmin-master目录,运行一下代码

pip3 install -r requirements.txt

在项目settings.py设置文件中引入:

在项目的urls.py中设置


然后运行:python manage.py makemigrations 建立数据库迁移文件

**

错误集锦

**

错误一:(关联关系ForeignKey引发的错误)

关联关系ForeignKey引发的错误,打开xadmin文件中的模型文件models.py
凡是出现关联关系字段的地方全部加上 on_delete=models.CASCADE , 如下图所示:

错误二:(ModuleNotFoundError: No module named 'django.core.urlresolvers)

模块包名称合并修改引发的错误**
错误提示:ModuleNotFoundError: No module named 'django.core.urlresolvers’

这是因为django2.1把from django.core.urlresolvers修改成了django.urls

from django.core.urlresolvers   import NoReverseMatch, reverse

改为:

from django.urls import NoReverseMatch, reverse

错误三:(TypeError:init()takes 1 positional argument but 0 were given)

出现如下错误提示:

这是因为,django2.1.1的 forms表单初始化仅一个参数,

forms.Field.__init__(self, required, widget, label, initial, help_text, *args, **kwargs)

修改为如图所示:

错误四:(ImportError: cannot import name ‘login’ from ‘django.contrib.auth.views’)

解决办法:

将 website.py 中的

from django.contrib.auth.views import login
from django.contrib.auth.views import logout

修改为

from django.contrib.auth import authenticate, login, logout

错误五:(ImportError: cannot import name ‘QUERY_TERMS’ from ‘django.db.models.sql.query’)

ImportError: cannot import name 'QUERY_TERMS' from 'django.db.models.sql.query'

解决办法:

django2.1.1版本将xadmin\plugins\filters.py文件中的

from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS

修改为

from django.db.models.sql.query import LOOKUP_SEP, Query

在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

错误六:(ModuleNotFoundError: No module named 'django.contrib.formtools)

ModuleNotFoundError: No module named ‘django.contrib.formtools’ 导入fromtools错误,版本太低

解决方案:

# 卸载旧版本
pip uninstall django-formtools

# 安装新版本
pip install django-formtools

错误七:(模型类不存在,类名改写)

解决方案:

把xadmin\plugins\password.py中的

from django.contrib.auth.views import password_reset_confirm

修改为:

from django.contrib.auth.views import PasswordResetConfirmView

再把位于75行左右 return后的 password_reset_confirm修改为 PasswordResetConfirmView,如下图所示

错误八:(AttributeError: ‘Settings’ object has no attribute ‘MIDDLEWARE_CLASSES’)

AttributeError: ‘Settings’ object has no attribute ‘MIDDLEWARE_CLASSES’

解决办法:

将xadmin\plugins\language.py 中的

if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE_CLASSES:

修改为:

if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE:

最后运行:

python manage.py makemigrations #创建迁移数据文件

再运行:

python manage.py migrate   #迁移数据库

如果在以上过程中出现类似错误,请依照错误相应修改,错误提示的先后顺序或许不一样,但是请仔细阅读错误提示代码。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
zhangFreedom 发布了7 篇原创文章 · 获赞 0 · 访问量 203 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: