Django 2.X 使用 Xadmin 搭建后台遇到的坑以及解决方法

一、序言:

  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
发布了150 篇原创文章 · 获赞 371 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/PY0312/article/details/103036896
今日推荐