美文网首页
Django项目从Django1.6升级到Django1.10

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

作者: Alfred愿意 | 来源:发表于2017-07-11 20:02 被阅读0次

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

    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',
                ],
            },
        },
    ]
    

    相关文章

      网友评论

          本文标题:Django项目从Django1.6升级到Django1.10

          本文链接:https://www.haomeiwen.com/subject/jwgmhxtx.html