django集成 xadmin 踩的坑

一、下载源代码,并安装源码到django项目

源代码官网:https://github.com/sshwsfc/xadmin/tree/django2

1、安装依赖
将源代码下载到本地,并进入到源代码目录,执行 pip install -r requirements.txt
备注:一般主要是django-crispy-forms django-formtools httplib2 django-reversion django-import-export future six依赖包

2、在django的根项目路径下,创建 extra_app 包,并把源码包里面的 xadmin 目录放进去

## ① settings.py 配置
如果采用源码放在django下的 extra_apps 文件内的方式:则需将 extra_apps 文件加入到项目环境变量中去,并把extra_apps包设置为源码文件夹
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_app'))

## ②注册相关app, 找到INSTALLED_APPS,追加配置如下
INSTALLED_APPS = [
            ......    
            'xadmin',
            'crispy_forms',
            'reversion',
        ]

## ③设置语言和时间格式
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
DATETIME_FORMAT = 'Y-m-d H:i:s'
DATE_FORMAT = 'Y-m-d'

## ④将 extra_apps 包 安装到源码根目录
在 pycharm 中 extra_apps 上右击 --> Mark Directory as -->  Source Root

## ⑤修改路由映射 url.py
import xadmin

urlpatterns = [
    path('xadmin/', xadmin.site.urls),
]

备注:pip直接安装xadmin插件 pip install django-xadmin
创建 extra_app 包,并把源码包里面的 xadmin 目录放进去
将 extra_apps 包 安装到源码根目录
修改路由映射

二、问题总结

1、No module named 'MySQLdb’

在项目的 __init__.py 文件中增加
import pymysql
pymysql.install_as_MySQLdb()

2、模块包名称合并修改引发的错误

错误提示:ModuleNotFoundError: No module named 'django.core.urlresolvers'
原因:django2.1把from django.core.urlresolvers修改成了django.urls
解决:from django.core.urlresolvers import NoReverseMatch, reverse

3、关联关系ForeignKey引发的错误

错误类型:TypeError: __init__() missing 1 required positional argument: 'on_delete'
原因:在django2.1 以上版本中,凡是出现关联关系字段的地方全部加上 on_delete=models.CASCADE 
解决方法:on_delete=models.CASCADE

4、参数缺失

错误类型:TypeError: __init__() takes 1 positional argument but 6 were given

django2.1.1的 forms表单初始化仅一个参数,
将 forms.Field.__init__(self, required, widget, label, initial, help_text, *args, **kwargs)  
修改为 forms.Field.__init__(self)

5、ImportError: cannot import name ‘login’ from 'django.contrib.auth.views’

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

# 修改为
from django.contrib.auth import authenticate, login, logout

6、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

7、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

再把位于75行左右  return后的  password_reset_confirm 修改为 PasswordResetConfirmView

8、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:

9、ModuleNotFoundError: No module named ‘django.contrib.formtools’ 导入fromtools

# 卸载旧版本
pip uninstall django-formtools
 
# 安装新版本
pip install django-formtools

最后运行:python manage.py makemigrations 创建迁移数据文件
再运行:python manage.py migrate 迁移数据库

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值