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 よりも前に trunk を使用していたので、時間をかけて移行しましたが、それでも変更しなければならなかった主要な点は newforms、newforms-admin、 str() に ユニコード() と maxlength から max_length

他の変更のほとんどは、新機能やバックエンドの書き換えなど、基本的な Web サイトを構築していた人にとっては近寄りがたいものでした。

アップグレードが簡単なのは、最も単純なサイトのみです。

あなたのサイトがたまたま目的の場合は、大きな痛みが予想されます 非ASCII 世界の一部(読んでください:米国と英国以外のどこでも)。Django での最も苦痛な変更は、内部でバイト文字列から Unicode オブジェクトに切り替えたことでした。今度は、バイト文字列を使用しているすべての場所を見つけて、これを Unicode に変更する必要があります。最悪の場合はテンプレートのレンダリングです。UnicodeError が発生するまで、1 つの変数を変更し忘れたことに気づくことはありません。

その他の注目すべき点:マニピュレーター (古い形) がなくなったため、すべての部分をフォーム (新しいフォーム).

これがあなたのケースで、プロジェクトが 2 ~ 3 個のアプリよりも大きい場合は、本当に必要になるまでアップグレードすることには消極的です。

複数のステップを経てアップグレードしましたが、それには非常に満足しています。問題のアプリケーションは約 100,000 LoC で、レガシー システムとの多くのインターフェイスを備えたいくつかのコア ビジネス機能を実行していました。私たちは次のように作業しました。

  1. Django 0.97-Post Unicodeマージに更新します。Unicode の問題をすべて修正する
  2. アプリケーションを再利用可能なアプリにリファクタリングし、テストを追加します。それにより、メインアプリケーション/プロジェクトに40.000 locが残りました
  3. django 0.97-post autoexcape マージにアップグレードします。3.で作成した再利用可能なアプリの自動エスケープを修正しました。次に、mian アプリケーションの残りの自動エスケープの問題を修正します。
  4. 1.0 にアップグレードします。残ったのは主に管理関連の修正でした。

サーバー上で従来の運用ブランチを実行しながら、他のブランチを 1.0 に移植するという作業全体に約 6 か月かかりました。そうすることで、本番ブランチに機能を追加することもできます。

最終的なマージは予想よりもはるかに複雑ではなく、4 人のプログラマーがマージ、レビュー、テスト、修正に約 1 週間かかりました。その後、私たちは活動を開始しましたが、約 1 週間にわたって、これまで予期していなかったバグに悩まされました。

全体として、結果には非常に満足しています。現在、さらなる開発に向けて、はるかに優れたコードベースが用意されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top