今天没事试了一下django框架的一个叫DjangoX的后台管理,在python3.6+Django 1.9环境下
1. 报错module ‘urllib’ has no attribute ‘quote’
解决办法:修改example/pages/custom_list.py文件的pk函数
urlib.quote( json.dumps(m_data) )
改为
urllib.parse.quote( json.dumps(m_data), '')
2. 报错’dict’ object has no attribute ‘has_key’
解决办法:修改example/pages/custom_list.py文件的result_item函数
if data.has_key(key):
text = data[key]
改为
if key in data:
text = data[key]
3. 报错No module named ‘django.core.urlresolvers’
解决办法:批量替换包django.core.urlresolvers为django.urls包
4. 使Django 1.11版本报错ImportError: cannot import name RadioFieldRenderer
解决办法:使用1.10之前的版本,因为Django后面的版本移除了RadioFieldRenderer,如果自己修改变动稍微有点大
5. 使用Django 2.0以上会报下面一大堆错误
No module named 'django.db.models.related'
No module named 'django.utils.importlib'
这两个错误是引入兼容性问题,DjangoX里面的代码对版本兼容性处理的时候只判断了第二位版本号,所以需要修改有django.VERSION[1]代码的地方
user = models.ForeignKey(AUTH_USER_MODEL, verbose_name=_(u"user"))
TypeError: __init__() missing 1 required positional argument: 'on_delete'
这个也很明显了,版本发生变化后有必要参数没传,需要对xadmin/models.py文件进行修改,所有用到models.ForeignKey的地方都需要修改,所以最好使用Django 1.10之前的版本
我要评论