将使用古老版本的Django编写的代码进行升级更新

我决定将以1.4版本编写的Django程序更新到现在的形式。
目标是将Django版本从1.4升级到1.11(这是Python 2系列的最后一个版本,对吧)。
重新构建可能会更快,但由于程序被精细地编写,我认为重做同样的东西会很困难…。
纠结太多,已经有点忘记了…。

环境。

Ubuntu 16.04 LTS
Python 2.7.12

Django 1.4升级至1.6

・毫无问题地运行良好。(就凭记忆)

Django 1.6升级至1.7版。

・本来就不会启动。
→我在settings.py中加入这个后,警告消失了。

import django

django.setup()

从INSTALLED_APPS中删除south。

・测试时发出警告(就像有一个新的测试运行器一样,他们听到了警告的声音。)

# python manage.py test
Creating test database for alias 'default'...
System check identified some issues:

WARNINGS:
?: (1_6.W001) Some project unittests may not execute as expected.
    HINT: Django 1.6 introduced a new default test runner. It looks like this project was generated using Django 1.5 or earlier. You should ensure your tests are all running & behaving as expected. See https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner for more information.
System check identified some issues:

当我在settings.py中加上这个内容后,警告消失了。

测试运行器 = ‘django.test.simple.DjangoTestSuiteRunner’
※ 在1.11版本中似乎不再需要这样的写法了。

在使用makemigrate时出现错误。
→删除APPPS下的migration文件夹中的所有文件。
仅保留 __init__.py 文件。
※如果以前的历史中使用了south,则无法执行makemigrate。

将django 1.7升级至1.8。

settings.py的编写方式发生了变化。
TEMPATE_DIR和TEMPLATE_LOADERS被废弃。
被替换成TAMPLATE。

我参考了这个链接:
https://www.monotalk.xyz/blog/django-18从settingspy的templates被非推奨而导致警告出力。

Django 1.8 升级至 1.9

我忘了…

Django 1.9 升级到 1.10

urls.py和settings.py的写法发生了变化
参数的描述不再使用圆括号,而是使用方括号

请将django 1.10升级至1.11。

正在调查中
Celeryd无法正常运行…。

如果Django是新安装的,则在运行1.4版本时,如果通过pip install -U Django==1.11进行更新,Django会很方便地进行解释,旧式的Settings.py和urls.py格式也可以正常运行。

从1.7版本左右开始,Django显然发生了巨大的变化。
由于Django 2.0是基于Python3.x系列,因此对于我这个知识浅薄的人来说,升级到更高版本可能会非常困难。

Django 1.11升级到2.02。

也许更像是关于Python而不是Django的话题,我简单总结一下。
由于Python 3成为基础,所以之前在Python 2.7中被友好地解释的一些内容现在变成了错误或者发生了很多变化。


`import commands` 被废弃,似乎被整合到 `import subprocess` 中。

为了导入自己创建的模块(脚本),需要稍微改变一下写法。
即使是同一级别的脚本,也需要指定路径,否则会出错。

旧:从cmd_exec导入*
新:从.导入cmd_exec
这边看起来也可以。
从.cmd_exec导入*

③用于Print语句的写法已经改变了。
– 现在需要添加括号
旧写法:print “\n”.join(configs)

新写法:print(“\n”.join(configs))

旧版代码中使用了旧式的字符串格式化方法,现在建议使用format方法进行文本的替代。
改:print(“command execute {}”.format(hostname))

・try~except的写法有些许变化。

旧:除了异常Exception之外,还有exp:
新:除了异常Exception之外,还有exp:

在models.py文件中,使用ForeignKey字段时必须加上on_delete=models.CASCADE选项。

     platform = models.ForeignKey(
        Platform,
        blank=False)

请将以下内容用中文进行转述:

     platform = models.ForeignKey(
        Platform,
        blank=False,
        on_delete=models.CASCADE,
        )

④修改urls.py的方法
似乎有一些改变了admin网站的写法。
旧:url(r’^admin/’,包括(admin.site.urls)),

新:url(r’^admin/’,admin.site.urls),

广告
将在 10 秒后关闭
bannerAds