前言:
django框架和python不必多说,写起代码来功能实现速度非常快,但是对于某些定制化修改不可避免有些小坑在其中,本篇将简单聊一聊python对应django版本的坑;
具体事例:
首先,相信使用django的朋友或多少碰到过以下报错:
前面写了好几个接口,功能实现的很顺利,有一个接口需要处理上传的图片,或者写完接口想要从管理面手动插入几条测试数据,然后接口一测或者测试数据一保存就蹦出来了500的状态码,然后报错信息主要就是下边的样子:
Exception Type: RuntimeError
Exception Value:
generator raised StopIteration
Exception Location: /Users/dongchao/.virtualenvs/py_django/lib/python3.7/site-packages/django/http/multipartparser.py in read, line 337
Python Executable: /Users/dongchao/.virtualenvs/py_django/bin/python
Python Version: 3.7.4
相关分析:
从报错状态来看就有点莫名其妙,然后generator raised StopIteration然后看相关代码也是框架中的代码,首先回去看一下自己调用接口的代码,完全没有使用迭代器,使用框架传递的参数也是完全正确;这时候思考下才想起来上网上找找答案,搜索了半天,不知道你会从哪里找到答案,我一般最终答案总在stackoverflow找到的答案:反正答案总是,你的django版本太旧了;
Your Django is very old and you need to update. This is a Python 3.7 compatibility problem that the Django devs already fixed four years ago, back when it was just a PendingDeprecationWarning on Python 3.5.
In fact, you are on the very last Django version that doesn't have the fix. Even 1.8.6 has the fix.
关键是连续碰到不同问题都是指向这样的答案,功能接口实现的七七八八,最后出现这样的幺蛾子是在有点痛心,整理了下资料,汇总下python对应django适配版本,让更多人使用时候对应好版本避免继续踩坑;
相关结论:
以下是整理相关python对应django版本的对应表,开始django前建议根据匹配版本避坑,如有相关问题可私信共同探讨;
Django version ——Python versions
1.11 —— 2.7, 3.4, 3.5, 3.6, 3.7 (added in 1.11.17)
1.8 —— 2.7, 3.2 (until the end of 2016), 3.3, 3.4, 3.5
1.9,1.10 —— 2.7,3.4,3.5
2.0 —— 3.4, 3.5, 3.6, 3.7
2.1, 2.2 —— 3.5, 3.6, 3.7
3.0, 3.1 —— 3.6, 3.7, 3.8
另外对于python和mysql对应版本参考如下:(想上图表,貌似没看到知乎有图表编辑功能,上图片了)

如有问题请私信给我;