2008-09-24 2 views

ответ

6

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

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

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

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

Итак, если вы делаете много действительно странный и/или сложного материал, простая модернизация должна быть относительно безболезненной и требует лишь несколько изменений.

+1

Не забывайте, что администратор и формы меняются. Это важно. Администратор не сложно. Формы, однако, могут быть убийцами. – 2008-09-24 17:42:15

3

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

2

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

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

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

1

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

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

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

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

1

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

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

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

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

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

Смежные вопросы