3

Djangoのドキュメントによると

INSTALLED_APPSで定義されたモジュールへのパスの最後の点線部分は一意である必要があります

私はDjangoをベースにしたCMSを開発しています。そして、ここで問題が発生します。2人のサードパーティ開発者が同じ名前で2つの異なるアプリを作成する瞬間が来るでしょう。

なんでそうなの?この制限を克服する可能性はありますか?

4

3 に答える 3

3

当面の解決策は、一意のアプリケーション名を使用することだけです。これは、現在取り組んでいる既知の制限です。

参考までに、これはArthurKozielによる2010Google Summer of Codeで承認されたプロジェクトの1つであり、 Djangoの2010GSOCwikiページで背景と設計上の考慮事項の一部を確認できます。

私の現在の理解では、Arthurの作業は大部分成功しましたが、1.3リリースを機能が少なく、バグ修正が多いリリースにすることへの懸念から、アプリの読み込みリファクタリングブランチのトランクへのマージを1.4開発サイクルまで遅らせることにしました。

于 2010-12-30T10:11:53.473 に答える
2

これは主に、Djangoが最後の部分を「app_label」プロパティとして使用している場所があるためです。

たとえばsomeModel._meta.app_label、モデルインスタンスを保存するデータベースを決定するために、マルチデータベースシナリオで使用できます。管理コマンドにも使用されます(「django.contrib.sites」ではなく「manage.pysqlallsites」と入力する必要があります)。

この制限を回避するにはどうすればよいですか?そうですね、アプリの名前が名前にまったく依存しない場合は、アプリの名前変更が機能するはずです。ただし、ほとんどのアプリは実際にはURLconfのアプリ名(たとえば(patterns("appname.views", ...)))を使用するため、これも変更する必要があります。

しかし、真剣に、なぜ同じ名前の2つのアプリをインストールするのでしょうか。それらが実際に同じ名前である場合、それらは通常同じ機能(たとえば、「ページネーション」と呼ばれるアプリ)を持っているため、複数を使用する必要はありません。

于 2010-12-30T01:55:13.523 に答える
0

2人のサードパーティ開発者が同じ名前で2つの異なるアプリを作成する瞬間が来るでしょう。

誤り。

アプリケーションの名前を簡単に変更して、一意にすることができます。

この制限を克服する可能性はありますか?

はい。アプリケーションの名前を変更します。それは簡単です。パッケージ名を変更すると、変更されます。それはどれほど難しいでしょうか?

于 2010-12-30T03:29:45.163 に答える