Обновление Django-проекта с переходом на новую версию Python
Клиент: Сервис по аренде самокатов, сайт на Django 1.11 (Python 2.7).
Проблема: Python 2.7 и Django 1.11 официально перестали поддерживаться годами ранее. Хостинг уведомил о принудительном отключении Python 2.7. Сайт мог просто перестать работать. Кроме того, в коде были критические уязвимости.
Что сделано:- Анализ кода: Создал ветку в Git и начал миграцию. Обновил Django до версии 2.2 (LTS), затем до 3.2 (LTS) и, наконец, до 4.2 (LTS). Параллельно обновлял все зависимые библиотеки.
- Исправление кода: В процессе обнаружил множество участков, где использовались устаревшие функции (например, django.core.urlresolvers вместо django.urls). Также пришлось переписать код, работающий со строками, так как в Python 3 изменилась работа с кодировками (Unicode).
- Тестирование: Покрыл ключевые сценарии (оформление заказа, личный кабинет) автоматическими тестами, чтобы убедиться, что после обновления всё работает как прежде. Провёл нагрузочное тестирование на тестовом сервере.
- Развёртывание: Перенёс обновлённый код на боевой сервер с новой версией Python.
- Результат: Сайт работает стабильно и быстро на актуальном стеке технологий. Уязвимости закрыты, производительность выросла на 15%.