8

既存のアプリを実際にアップグレードする必要がありますか、それともほとんどゼロから書き直して、可能な部分 (テンプレートなど) を保存する必要がありますか?

4

5 に答える 5

7

これは何をしているかにもよりますが、ほとんどのアプリケーションはアップグレードするだけで問題をすべて解決できるはずです。私の経験では、アップグレード後に修正しなければならなかった主な点は次のとおりです。

  1. 次の外部キーの構文など、モデルに関するいくつかのファンキーなものへの変更。

  2. テンプレートの小さな変更、特に自動エスケープ。

  3. Django の内部の特定の構造に依存するものすべて。プロジェクトに必要/便利な方法で動作を変更するためにDjangoの内部を動的に変更するようなことをしていない限り、これは問題になりません。

要約すると、非常に奇妙なことや複雑なことをたくさん行っていない限り、単純なアップグレードは比較的簡単で、わずかな変更しか必要としません。

于 2008-09-24T17:26:05.920 に答える
3

アップグレードします。私にとってはとても簡単でし__str__()た。1.0 でアプリの実行を開始してテストし、エラーが発生した場合は、下位互換性のない変更に関するドキュメントを使用して、問題を修正する方法を確認してください。__unicode__()admin.py

于 2008-09-24T17:23:18.750 に答える
2

アプリをアップグレードするだけです。0.96 から 1.0 への変更は非常に大きなものでしたが、下位互換性のない変更に関しては、あなたのアプリがその 10% を持っているとは思えません。

私は Django 1.0 より前にトランクを使用していたので、移行には時間がかかりましたが、それでも変更が必要だった主な変更点は、newforms、newforms-admin、str () からunicode ()、および maxlength から max_lengthだけでした。

その他の変更のほとんどは、基本的な Web サイトを構築していた人間としては手が届かなかった新機能やバックエンドの書き直しなどでした。

于 2008-09-24T19:08:01.480 に答える
1

最も単純なサイトだけは簡単にアップグレードできます。

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

その他の注目すべき点: マニピュレーター ( oldforms ) はなくなり、すべてのパーツをフォーム ( newforms )で書き直す以外に方法はありません。

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

于 2008-09-26T10:40:03.960 に答える
1

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

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

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

最終的なマージは予想よりはるかに簡単で、4 人のコーダーがマージ、レビュー、テスト、および修正を行うのに約 1 週間かかりました。その後、ロールアウトしましたが、約 1 週間、以前は予期していなかったバグに悩まされました。

全体として、私は結果に非常に満足しています。さらなる開発のために、今でははるかに優れたコードベースがあります。

于 2009-01-04T12:52:44.033 に答える