Django项目从Django1.6升级到Django1.10

2017-07-11  本文已影响0人  Alfred愿意

升级过程中碰到的一些注意点,拿出来与大家分享,希望对正在或需要升级项目的朋友有帮助。

1、URL

Django1.6中使用的是如下代码

from django.conf.urls import patterns, url

from polls import views

urlpatterns = patterns('',
    url(r'^$', views.index, name='index')
)

在Django1.10版本中,patterns方法已经被移除了,换成url即可:

from django.conf.urls import url

from polls import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

2、django-extensions

如果在项目中使用了django-extensions,并且版本低于1.5.9,那么在项目升级的过程中,也要把django-extensions升级到1.5.9版本。

命令直接用

pip install django-extensions==1.5.9

3、django-cors-headers

如果在项目中使用了django-cors-headers,由于Django1.10已经不支持这个组件了,推荐使用django-cors-middleware,具体命令如下。

首先移除django-cors-headers:

pip uninstall django-cors-headers

如果权限不够的话,在前面加上 sudo

然后安装django-cors-middleware

pip install django-cors-middleware

如果权限不够的话,在前面加上 sudo

4、South

如果在1.6版本项目中使用了South的话,还要做一下迁移的工作。步骤如下:

  1. 确认所有的installs都以South创建的迁移完全更新。就是确认全部是要更新的。
  2. INSTALLED_APPS
    中移除 'south'。
  3. 删除你所有的迁移文件(编号标识的),但不能删除所在目录或 __init__.py (切记不可删除__init__.py),也需确认删除 .pyc文件。
  4. 运行 python manage.py makemigrations. Django应该看到空的迁移目录,并以新的格式进行新的初始迁移。
  5. 执行python manage.py migrate --fake-initial。Django会看到初始迁移的表已经存在,并将它们标记为已应用,而不运行它们。(Django不会检查表模式是否与您的模型匹配,只是正确的表名存在)。

迁移参考链接:http://python.usyiyi.cn/translate/django_182/topics/migrations.html

5、Templates

在升级之后,原来项目中settings.py中对于TEMPLATES的设置也失效了。

原项目的设置为:

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, 'frontend/dist/'),
)

升级之后修改为:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(PROJECT_ROOT, 'frontend/dist/')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
上一篇下一篇

猜你喜欢

热点阅读