原文照搬:php
因爲Django的產品週期問題,咱們決定將Django從當前開發的1.8版本升級到2.0版本,此新最版本已再也不支持python2,因此開發語言也須要相應升級到3.6版本。其間幾個重要的變動技術點節錄以下(以更改過程爲主,不區別django仍是python變動,且django中的變化也不同是2.0中才開始具備的):html
Python3中,print從語句變爲函數,因此全部的print語句須要改爲print()python
在django 2中,models中on_delete=models.XXX再也不是默認選項,須要顯性指定django
# 表示外鍵關聯到做者表,看成者表刪除了該條數據,圖書表中不刪除,僅僅是把外鍵置空 author = models.ForeignKey(AuthModel, null=True, blank=True, on_delete=models.SET_NULL)
在新版本django中,這些包再也不歸於core,而是屬於django.urls包,須要更改import路徑dom
from django.urls import reverse
在新版本django中,中間件的key值由MIDDLEWARE_CLASSES變動爲MIDDLEWAREide
在新版本django中SessionAuthenticationMiddleware這個中間件不須要了。函數
新版本django中render_to_response不建設使用,改成使用render函數。加密
新版本python後,django的models定義須要從__unicode__變動到__str_url
新版python中字典的has_key方法取消,建議用」str」 in dict判斷spa
新版django中,orm多對多外健再也不用=等賦值,改成set方法
new_list = [obj1, obj2, obj3]
e.related_set = new_list ===》 e.related_set.set([obj1, obj2, obj3])
在使用PyCryptodome做AES加密解密時,注意python3裏decode和encode的使用
str(b'','utf8')能夠吧BYTES轉換成unicode;bytes('','utf8')反向操做
在django升級以後,makemigration重做,migrate可能須要手工增長on_delete=models.XXX
若是安裝好新版python3解釋以後,經過更改active文件中的路徑,能夠實現拷貝目錄通用.
參考文檔:https://yq.aliyun.com/articles/324355
管理員下修改:
C:\Program Files\Anaconda3\Lib\site-packages\formtools\wizard打開views.py文件
修改第5行內容爲:
from django.urls import reverse
推薦一個改錯的參考文檔:
django2.0集成xadmin0.6報錯集錦:http://www.lybbn.cn/data/bbsdatas.php?lybbs=50