Django 版本报错记录
前提:使用Django框架开发,一开始使用Django3.2
报错一:在使用jsonfield中的JSONField时报错
File "/data/app/hn_data_collect/hn_data_collect/proxy/models.py", line 6, in <module>
from .custom_fields import JSONField
File "/data/app/hn_data_collect/hn_data_collect/proxy/custom_fields.py", line 2, in <module>
from jsonfield import JSONField as upstream_JSONField
File "/data/Envs/hn_data_collect/lib/python3.6/site-packages/jsonfield/__init__.py", line 3, in <module>
from .fields import JSONField
File "/data/Envs/hn_data_collect/lib/python3.6/site-packages/jsonfield/fields.py", line 11, in <module>
from django.utils import six
ImportError: cannot import name 'six'
进过排查发现:Django3无法导入six
解决方法:
from django.utils import six
改为
import six
因为我的项目的特殊性,我将Django3.2改为Django2.2, 问题也能解决。
报错二:使用外键时报错
project = models.ForeignKey(Project)
错误信息如下:
TypeError: __init__() missing 1 required positional argument: 'on_delete'
经过排查:django 升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常。
解决方法如下:
project = models.ForeignKey(Project, on_delete=models.CASCADE)
同样因为项目的特殊性,我将Django2.2改为Django1.11, 问题也能解决。
报错三:改为Django1.11时,path引入报错
from django.urls import path, include
改为
from django.conf.urls import url, include
原因:django1.11版本时,配置路由一直都是再用url方法,只要升到Django2才能使用path。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!