Как лучше всего обновить Django с версии 0.96 до версии 1.0?

StackOverflow https://stackoverflow.com/questions/128466

  •  02-07-2019
  •  | 
  •  

Вопрос

Должен ли я попытаться обновить существующее приложение или просто переписать его практически с нуля, сохранив те части (шаблоны и т. д.), которые я могу?

Это было полезно?

Решение

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

  1. Изменения в некоторых интересных вещах с моделями, таких как синтаксис следования по внешним ключам.

  2. Небольшой набор изменений шаблона, в первую очередь автоматическое экранирование.

  3. Все, что зависит от конкретной структуры внутреннего устройства Django.Это не должно быть проблемой, если вы не делаете такие вещи, как динамическое изменение внутренних компонентов Django, чтобы изменить их поведение так, как это необходимо/удобно для вашего проекта.

Подводя итог: если вы не делаете много действительно странных и/или сложных вещей, простое обновление должно быть относительно безболезненным и требовать лишь нескольких изменений.

Другие советы

Обновление.Для меня это было очень просто:изменять __str__() к __unicode__(), напиши основное admin.py, и готово.Просто запустите свое приложение в версии 1.0, протестируйте его и, если вы обнаружите ошибку, используйте документацию на обратно несовместимые изменения чтобы узнать, как решить проблему.

Просто обновите свое приложение.Переход с 0,96 на 1,0 был огромным, но с точки зрения изменений, несовместимых с обратной совместимостью, я сомневаюсь, что в вашем приложении их хотя бы 10%.

Я работал в магистрали до Django 1.0, поэтому переход для меня был со временем, но даже тогда единственные важные вещи, которые мне пришлось изменить, это newforms, newforms-admin, ул.() к Юникод() и от maxlength до max_length

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

Только самые простые сайты легко обновить.

Ожидайте настоящей боли, если ваш сайт предназначен для не-ASCII часть света (читай:где-либо за пределами США и Великобритании).Самым болезненным изменением в Django был внутренний переход от байтовых строк к объектам юникода — теперь вам нужно найти все места, где вы используете байтовые строки, и изменить их на юникод.Худший случай — это рендеринг шаблона: вы никогда не узнаете, что забыли изменить одну переменную, пока не получите UnicodeError.

Другая примечательная вещь:манипуляторы (старые формы) ушли и у вас нет другого выхода, как переписать все части с формами (ньюформы).

Если это ваш случай и ваш проект превышает 2-3 приложения, я бы не хотел обновляться до тех пор, пока это не станет действительно необходимым.

Мы провели обновление в несколько этапов, и я этим вполне доволен.Рассматриваемое приложение имело около 100 000 LoC и выполняло несколько основных бизнес-функций с множеством интерфейсов к устаревшим системам.Мы работали так:

  1. Обновление до Django 0,97-пост Unicode Merge.Исправьте все проблемы с Юникодом
  2. Refactor приложение в приложения многоразового использования, добавьте тесты.Это оставило нас с 40 000 loc в основном приложении/проекте
  3. Обновите django до версии 0.97 после автоматического слияния.Исправлено автоматическое экранирование в повторно используемых приложениях, созданных в версии 3.Затем исправьте оставшиеся проблемы с автоматическим экранированием в приложении mian.
  4. Обновите до 1.0.Осталось в основном исправить административные вещи.

Все это заняло около 6 месяцев: мы запускали устаревшую производственную ветку на наших серверах и одновременно портировали другую ветку на версию 1.0.При этом мы также добавляли функции в производственную ветку.

Окончательное слияние было гораздо менее запутанным, чем ожидалось, и потребовалось около недели для слияния, проверки, тестирования и исправления четырех программистов.Затем мы развернулись, и около недели нас терзали ранее неожиданные ошибки.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top