Обновление / обновление кода проекта Django 1.8 до Django 2.0 - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть большой проект django, построенный в 1.8 с около 14 приложениями и большим количеством зависимостей.

У меня уже есть хорошая идея о том, как я собираюсь обновить код 2.7 до 3.6 или, возможно,просто сделайте его совместимым с обоими, однако я не уверен, что является лучшим и наиболее эффективным способом реорганизации / обновления фреймворка django до версии 2.0 с версии 1.8.

Запомните тысячи строк кода, поэтому эффективность с точки зрения работы имеет решающее значение.

Заранее благодарим за все предложения!

1 Ответ

0 голосов
/ 23 сентября 2018
  1. Прежде всего вы должны обновить все ваши пакеты для поддержки Python 3.6 и Django 2.0.
  2. Во всех ваших urls.py вы должны изменить все функции url на path или re_path.

    url('some/', Create.as_view()) # old version

    path('some/', Create.as_view()) # new version

Если вы используете namespace в своей основной urls.py, вам следуетдобавьте app_name к каждому приложению urls.py.

app_name = ‘app-name’
Найдите в своем проекте is_authenticated() и измените его везде на is_authenticated.Теперь это атрибут, а не метод.Сделайте то же самое для from django.core.urlresolvers import reverse, замените его на from django.urls import reverse.

Теперь каждое поле модели ForeignKey должно иметь аргумент on_delete.Например:

on_delete=models.CASCADE on_delete=models.DO_NOTHING on_delete=models.SET_NULL

Проверьте официальную документацию по этому

Затем выполните миграции:

python manage.py makemigrations
python manage.py migrate

Далее, в settings.py вам нужно изменить MIDDLEWARE_CLASSES на MIDDLEWAR Затем обновить MIDDLEWAR, чтобы соответствовать этому:

'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware'

Если вы используете свое промежуточное программное обеспечение в своем проекте, вы должны наследовать от MiddlewareMixin, а не от object.Поэтому вы должны импортировать его

from django.utils.deprecation import MiddlewareMixin

Проверьте официальную документацию для получения дополнительной информации. Попробуйтесделать это первым в следующий раз.

...