Djangoのドキュメントによると:
INSTALLED_APPSで定義されたモジュールへのパスの最後の点線部分は一意である必要があります
私はDjangoをベースにしたCMSを開発しています。そして、ここで問題が発生します。2人のサードパーティ開発者が同じ名前で2つの異なるアプリを作成する瞬間が来るでしょう。
なんでそうなの?この制限を克服する可能性はありますか?
Djangoのドキュメントによると:
INSTALLED_APPSで定義されたモジュールへのパスの最後の点線部分は一意である必要があります
私はDjangoをベースにしたCMSを開発しています。そして、ここで問題が発生します。2人のサードパーティ開発者が同じ名前で2つの異なるアプリを作成する瞬間が来るでしょう。
なんでそうなの?この制限を克服する可能性はありますか?
当面の解決策は、一意のアプリケーション名を使用することだけです。これは、現在取り組んでいる既知の制限です。
参考までに、これはArthurKozielによる2010Google Summer of Codeで承認されたプロジェクトの1つであり、 Djangoの2010GSOCwikiページで背景と設計上の考慮事項の一部を確認できます。
私の現在の理解では、Arthurの作業は大部分成功しましたが、1.3リリースを機能が少なく、バグ修正が多いリリースにすることへの懸念から、アプリの読み込みリファクタリングブランチのトランクへのマージを1.4開発サイクルまで遅らせることにしました。
これは主に、Djangoが最後の部分を「app_label」プロパティとして使用している場所があるためです。
たとえばsomeModel._meta.app_label
、モデルインスタンスを保存するデータベースを決定するために、マルチデータベースシナリオで使用できます。管理コマンドにも使用されます(「django.contrib.sites」ではなく「manage.pysqlallsites」と入力する必要があります)。
この制限を回避するにはどうすればよいですか?そうですね、アプリの名前が名前にまったく依存しない場合は、アプリの名前変更が機能するはずです。ただし、ほとんどのアプリは実際にはURLconfのアプリ名(たとえば(patterns("appname.views", ...)
))を使用するため、これも変更する必要があります。
しかし、真剣に、なぜ同じ名前の2つのアプリをインストールするのでしょうか。それらが実際に同じ名前である場合、それらは通常同じ機能(たとえば、「ページネーション」と呼ばれるアプリ)を持っているため、複数を使用する必要はありません。
2人のサードパーティ開発者が同じ名前で2つの異なるアプリを作成する瞬間が来るでしょう。
誤り。
アプリケーションの名前を簡単に変更して、一意にすることができます。
この制限を克服する可能性はありますか?
はい。アプリケーションの名前を変更します。それは簡単です。パッケージ名を変更すると、変更されます。それはどれほど難しいでしょうか?