childish-page-banner

Как да надградим Django - ръководство стъпка по стъпка

Когато работим по мащабни проекти, обикновено разработката им отнема години. При това положение не е чудно, че използваните в началото технологии са остарели и идва момент, в който трябва да бъдат актуализирани с по-нови.

Защо обновяваме софтуера?


Първо, новите технологии често ни позволяват да постигнем същата функционалност с по-малко код, защото предлагат допълнителни възможности за реализация. Освен това новите версии на технологиите осигуряват по-добра защита срещу злонамерена дейност, тъй като в повечето случаи хакерите вече са открили пропуските в сигурността на старите системи и начините за тяхното преодоляване. Най-новите версии включват и нови функции, които можем да използваме. 

Това са основните причини, поради които искаме даден софтуер да бъде актуализиран често.

Целта


Да кажем, че най-новата версия с дългосрочна поддръжка (LTS) на Django е избраната версия, която искаме да обновим. Ако имате повече от една версия между текущата и желаната, не е добра идея да преминавате директно към нея. Вместо това го направете на етапи за всяка LTS версия и я пуснете поотделно. Ефикасният процес на обновяване помага за по-плавното му осъществяване, като го насърчава да се случва във всяка точка на издаване.

Ето кои са поддържаните в момента версии на Django:

Източник: Django website

В тази публикация в блога разглеждам процеса, който следвахме за нашите поръчкови приложения, усъвършенстван от опита на всяко предишно надграждане.

Процесът по етапи
Планиране и подготовка
Планирането е на първо място. Изберете подходящите библиотеки, след като изберете версията на Django. Имайте предвид, че проектът може да не може да работи с по-нова версия на Django и нейните по-стари библиотеки, защото много от тях няма да са съвместими.

Подготовката идва след това. Създаваме таблица в Excel с всички библиотеки, които се използват в момента в проекта.

Следващата стъпка е проверка дали тази по-нова версия не изисква по-нов Python. Версиите на Django са съчетани с определени диапазони от версии на Python, които са били налични при разработването на тази версия, така че обновяването на Python е итеративен процес.

Следващата стъпка в процеса на планиране е да се намерят бележките за издаване - прочетете всяка бележка за издаване на версията на Django, която е по-голяма от текущата. Разберете промените в бележките за издаване на версиите и всяка модификация, която трябва да се направи в кода, за да може проектът да използва по-новата версия. Прочетете ги внимателно, тъй като някои промени могат да бъдат много фини по отношение на това как предизвикват проблеми. След това сме готови да предприемем действия.

Действие
Добре е да започнете с бележките към изданието на Django и всички промени в него. След това промяната на няколко импорта е половината от работата. Например: 

При обновяването от версия 1.11 до версия 2.2 замених "from django.core.urlresolvers import reverse" с "from django.urls import reverse". 
-from rest_framework.filters import DjangoFilterBackend
+from django_filters.rest_framework import DjangoFilterBackend

Отмяна на аргумента Router.register base_name в полза на basename
Възможно е да има някои малки промени в кода, като например:

Добавяне на метода ForeignKey on_delete
Заменете употребите на @detail_route с @action(detail=True, )
Заменете употребите на @list_route с @action(detail=False, )
добавяне на подразбиране за вложено поле на сериализатора
Поправяне на много обратни извиквания на адреси

Продължете, като актуализирате версията на Django Rest Framework и всички библиотеки от Excel, като отбележите получената версия.

Разбира се, някои от тях може да не могат да бъдат актуализирани с помощта на предишната версия на Django, така че можете да ги оставите за накрая. Например при една от актуализациите ни имаше проблем с пакета, който ни позволява да записваме данни във формат JSON. По-новата версия на Django поддържа това специфично поле. Така че трябваше да премахна старата библиотека и да мигрирам данните. Конвертирането на библиотеката на Djoser беше трудната част, но нямаше нищо невъзможно. И накрая, когато всички библиотеки са обновени, дойде време да се повиши действителната версия на Django.

Новини

Като натиснете бутона Приемам, вие давате съгласието си за използването на бисквитки при достъпването на този уебсайт и използването на нашите услуги. За да научите повече как се използват и управляват бисквитките, моля, обърнете се към нашата

Cookie Statement & Privacy Policy