Решение ошибки ImportError в Django 2.0: импорт reverse

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вы встретились с ошибкой ImportError: Модуль 'django.core.urlresolvers' не найден, то вам следует заменить:

Python
Скопировать код
from django.core.urlresolvers import ...

на:

Python
Скопировать код
from django.urls import ...

Такое изменение обусловлено перестройкой структуры Django в версии 2.0, в которой модуль django.core.urlresolvers был признан устаревшим.

Кинга Идем в IT: пошаговый план для смены профессии

Глубже в суть: Почему произошли эти изменения

Модуль django.core.urlresolvers утратил свою актуальность ещё в версии Django 1.10 и был удалён в версии 2.0. Это произошло в рамках оптимизации фреймворка и повышения читаемости кода. Если вы собираетесь обновить приложение до новой версии Django, было бы целесообразно отслеживать подобные изменения, ведь они затрагивают не только расположение функций reverse и reverse_lazy, но и другие аспекты взаимодействия с URL-адресами и представлениями.

Приготовление к переходу – Миграция на Django 2.0

В версии Django 2.0 вас ждёт множество новшеств:

  1. Рефакторинг шаблонов URL: Замените url() на path() или re_path() для улучшения понятности кода.
  2. Проверка промежуточного программного обеспечения: Убедитесь, что ваше middleware совместимо с MiddlewareMixin.
  3. Обновление полей моделей: Поля некоторых моделей были переработаны.
  4. Пересмотр функциональности классов-представлений: Обратите внимание на использование mixins.

Не пренебрегайте примечаниями о выпуске Django 2.0, поскольку они содержат информацию о функциях, которые устарели, и о новшествах.

Вступаем в роль программиста: Советы по рефакторингу

Для облегчения процесса обновления:

  • Используйте PyCharm: Эта IDE располагает отличными инструментами рефакторинга, которые могут автоматически обновить устаревшие ссылки в проекте.
  • Виртуальные окружения: Используйте virtualenv или pipenv для изоляции управления зависимостями проекта и избегания конфликтов между версиями Django.

Визуализация

Вам предстоит освоить изменения в работе с URL-адресами в Django:

Python
Скопировать код
# Это было раньше – "Не очень умный" компас (🧭❌)
from django.core.urlresolvers import url

# А теперь – "Всезнающий" GPS (🛰️✅)
from django.urls import path

Сравните Django с системой навигации:

Версия DjangoСистема навигацииСтатус
< 2.0🧭 Старый компасУстарело
>= 2.0🛰️ GPSАктуально

Пора обновиться – ведь вы вряд ли предпочли бы компас для ориентирования в новом автомобиле Tesla.

Безопасность при переходе

Сконцентрируйтесь на ключевых моментах во время миграции:

Матрица совместимости Python и Django

Прежде чем начать обновление, убедитесь, что ваша версия Python поддерживается новой версией Django. Игнорирование этого момента может привести к серьезным проблемам.

Устранение проблем с Reverse и Reverse_lazy

Замените импорты на актуальные:

Python
Скопировать код
from django.urls import reverse, reverse_lazy

Таким образом вы не только исправите проблему с ImportError, но и приведёте проект в соответствие с современными стандартами кодирования.

Марафон по документации Django

Для профессиональных разработчиков документация – источник необходимой информации. В ней содержатся все требуемые руководства по миграции, сведения о совместимости и информация об обновлениях API.

Полезные материалы

  1. Примечания к выпуску Django 1.10 | Документация Django – Содержит информацию об удалении модуля django.core.urlresolvers.
  2. Примечания к выпуску Django 2.0 | Документация Django – Указывает, что изменится в версии 2.0.
  3. Утилиты django.urls | Документация Django – Подробное описание функций url и reverse.
  4. Fixed #26716 — Добавлен MiddlewareMixin к CurrentSiteMiddleware – Обсуждение и решение проблемы с urlresolvers.
  5. Django | endoflife.date – Информация о поддерживаемых версиях Django и о сроках их жизненного цикла.
  6. Django · PyPI – История версий Django на Python Package Index.
  7. Reddit – Обсуждение обновлений Django – Форум, где обмениваются опытом обновления Django и решениями возникающих проблем.