Что лучший способ состоит в том, чтобы обновить от Django 0.96 до 1,0?

Сначала наличие startWith на всех этих наблюдаемых означает, что они все испустят в начале ложь. Как будто вы нажали все эти кнопки одновременно.

Я думаю, вы должны попытаться добиться другого поведения. Используя startWith, вы хотите установить начальное состояние свойства modal, верно? Поэтому оно должно прийти после слияния этих потоков вместе.

Для переключения значения вам нужны две вещи:

  1. место, где хранить состояние (обычно аккумулятор scan)
  2. различать эти нажатия кнопок У вас есть три кнопки, поэтому вам нужно три значения.

Это мой подход:

 const modal$ = merge(
    show$.pipe(mapTo(true)),
    hide$.pipe(mapTo(false)),
    toggle$.pipe(mapTo(null))
  ).pipe(
    startWith(false),
    scan((acc, curr) => {
      if (curr === null) {
        return !acc;
      } else {
        return curr;
      }
    })
  );

Показать кнопку всегда выдает true, кнопка скрытия выдает false, а кнопка переключения - null. Я объединяю их вместе, и мы хотим начать с false. Далее идет scan, который держит состояние в аккумуляторе.

Когда приходит null, он возвращает отрицательное состояние. Когда приходит true или false, он возвращает его - таким образом он устанавливает новое состояние независимо от предыдущего значения.

7
задан Hank Gay 4 January 2009 в 22:52
поделиться

5 ответов

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

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

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

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

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

6
ответ дан 6 December 2019 в 19:44
поделиться

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

3
ответ дан 6 December 2019 в 19:44
поделиться

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

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

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

2
ответ дан 6 December 2019 в 19:44
поделиться

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

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

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

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

1
ответ дан 6 December 2019 в 19:44
поделиться

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

  1. Обновление django слияния unicode с 0.97 сообщениями. Устраните все unicode проблемы
  2. осуществите рефакторинг приложение в допускающие повторное использование приложения, добавьте тесты. Это оставило нас с 40 000 LoC в главном приложении
  3. Обновите до django слияния autoexcape с 0.97 сообщениями. Зафиксируйте автоматический выход в допускающих повторное использование приложениях, созданных в 3. Затем устраните остающиеся проблемы автовыхода в mian приложении.
  4. Обновите до 1,0. То, что оставили, главным образом фиксировало администраторский материал.

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

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

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

1
ответ дан 6 December 2019 в 19:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: