Как лучше всего перейти с Django 0,96 на 1,0? - PullRequest
7 голосов
/ 24 сентября 2008

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

Ответы [ 5 ]

6 голосов
/ 24 сентября 2008

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

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

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

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

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

3 голосов
/ 24 сентября 2008

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

2 голосов
/ 24 сентября 2008

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

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

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

1 голос
/ 04 января 2009

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

  1. Обновление до django 0.97-post-unicode слияния. Исправить все проблемы с Unicode
  2. рефакторинг приложения в многоразовые приложения, добавить тесты. Это оставило нас с 40.000 LoC в основном приложении / Проект
  3. Обновление до django 0.97-post autoexcape merge. Исправьте автоматическое экранирование в многократно используемых приложениях, созданных в 3. Затем исправьте оставшиеся проблемы автоматического экранирования в приложении mian.
  4. Обновление до 1.0. То, что осталось, в основном исправляло админские вещи.

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

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

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

1 голос
/ 26 сентября 2008

Обновлять можно только самые простые сайты.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...