谨慎:Django2.1版本与Django1.8版本是有区别

我弄项目的时候,本来是用Django1.8版本的,然后今天手残pip3 install django,然后python manga.py runserver时候出现一系列错误,debug一个小时才想起来,是不是版本问题,后来发现,果真是版本问题:

Django1.8升为Django2.1会出现的3个bug:

1. 错误:TypeError: init() missing 1 required positional argument: ‘on_delete’
分析: 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题
解决: 只需要在模型类中设置外键的类添加on_delete=models.CASCADE

 
2.错误:django.core.exceptions.ImproperlyConfigured: Passing a 3-tuple to include() is not supported. Pass a 2-tuple containing the list of patterns and app_name, and provide the namespace argument to include() instead.

分析: 这个项目目录中urls.py中urls的报错。
解决:

urlpatterns = [
	url(r"^admin/", include(admin.site.urls)),
	...
]

将上面的第一行url去掉include即可,其他url保持不变

urlpatterns = [
	url(r"^admin/",admin.site.urls),
	...
]

3错误:django.db.utils.ProgrammingError: (1064, “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED’ at line 1”)

分析: 项目录下下的settings.py文件中DATABASES中缺少一行代码
解决: 在setting.py文件中找到DATABASES,然后添加一行代码

‘OPTIONS’: {‘isolation_level’: None} 

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40576010/article/details/88770341