Djangoアプリケーション:2022年に知っておくべきことすべて
公開: 2021-01-04Djangoは、専門家によって構築されたトップのPythonフレームワークの1つであり、Web開発者の実用的な設計と迅速な開発を促進します。 これは高速で安全であり、Web開発者の間で人気があります。 Djangoには、構成を保存し、イントロスペクションを提供するのに役立つアプリケーションのレジストリがすでにインストールされています。 利用可能なモデルの包括的なリストを維持します。 レジストリはアプリと呼ばれます。 Djangoアプリケーションは「django.apps」で利用できます
>>>django.appsからアプリをインポート
>>> apps.get_app_config('admin')。verbose_name
'管理'
目次
Djangoプロジェクト
Djangoアプリケーションはすべてプロジェクトと呼ぶことができます。 設定モジュールによって定義されます。 ただし、他にもいくつか含まれています。 たとえば、 django-admin startproject mysiteを実行すると、mysiteプロジェクトディレクトリが取得されます。 これには、 setting.py、urls.py、asgi.py、wsgi.pyを含むmysitePythonパッケージが含まれます。 多くの場合、パッケージを拡張して、特定のアプリケーションに関連付けられていないCSS、フィクスチャ、およびその他のテンプレートを含めることができます。
プロジェクトのルートディレクトリまたはmanage.pyがあるディレクトリには、通常、個別にインストールされていないすべてのプロジェクトのアプリケーションが含まれています。

Djangoアプリケーション
アプリケーションとは、いくつかの機能を備えたPythonのパッケージを意味します。 複数のプロジェクトで再利用できます。 アプリケーションは、ビュー、モデル、テンプレートURL、静的ファイルなどの組み合わせにすることができます。これらは、多くの場合、 INSTALLED-APPS設定のプロジェクトに組み込まれています。 多くの場合、ミドルウェア設定であるURLconfsなどの他のメカニズムとオプションで接続できます。
読む:インドのDjango開発者給与
Djangoアプリケーションは、特定のフレームワークのいくつかの部分との相互作用を作成するコードセットです。 Applicationオブジェクトはありません。 場合によっては、Djangoはイントロスペクションまたは構成のために特定のアプリケーションと対話する必要があります。 したがって、インストールされているアプリケーションのAppConfigにはメタデータがあります。 プロジェクトパッケージもアプリケーションと見なすことができ、モデルを持つこともできます。
Djangoアプリケーションの設定
アプリケーションを構成する場合は、 AppConfigをサブクラス化してから、 INSTALLED_Appsのそれに点線を追加する必要があります。 点線を取得すると、Djangoはdefault_app_config変数のチェックを開始します。 定義されると、その特定のアプリケーションのAppConfigサブクラスになります。 default_app_configが作成されていない場合、Djangoは基本のAppConfigクラスを使用します。
また読む:フルスタックと平均スタックの違い
Djangoアプリケーションの作成者向け
「ロックンロール」プラグイン可能なアプリを開発しているとしましょう。 次に、次の方法で名前を作成できます。
#rock_n_roll / apps.py
django.appsからAppConfigをインポートします
クラスRockNRollConfig(AppConfig):
名前='rock_n_roll'
verbose_name =“ Rock'n' roll”
以下を使用して、AppConfigサブクラスとしてロードすることもできます。
#rock_n_roll / __ init__.py
default_app_config ='rock_n_roll.apps.RockNRollConfig'
したがって、RockNRollConfigは、インストール済みアプリに「rock_n_roll」が存在する場合に使用できます。 これは、ユーザーがINSTALLED_APPSで更新を行わなくても、AppConfigの機能を利用するのに役立ちます。
アプリケーションのユーザー向け
アンソロジーと呼ばれるプロジェクトでロックンロールアプリケーションを使用しているとしましょう。 さて、あなたはそれがその前にジャズマヌーシュとして登場することを望みます。 したがって、次の手順に従うことができます。
#anthology / apps.py
rock_n_roll.appsからRockNRollConfigをインポートします
クラスJazzManoucheConfig(RockNRollConfig):
verbose_name =“ジャズマヌーシュ”
#anthology / settings.py
INSTALLED_APPS = [
'anthology.apps.JazzManoucheConfig'、
#…
]
クラスAppConfig
アプリケーションのメタデータは、アプリケーション構成オブジェクトに格納されます。 これらの属性の一部はAppConfigサブクラスで構成され、読み取り専用またはDjangoによって設定されます。

構成可能な属性
AppConfig.name
パス:django.contrib.admin
これは、構成が適用されるアプリケーションを定義するのに役立ちます。 AppConfigサブクラスで設定されます。 Djangoプロジェクトでユニークです。
AppConfig.label
名前:管理者
特に2つのラベルのラベルが競合している場合に、アプリケーションのラベルを変更するのに役立ちます。 デフォルトでは、名前の最後のコンポーネントになります。 Pythonの有効な識別子である必要があります。 Djangoプロジェクトでユニーク。
AppConfig.verbose_name
名前:管理
デフォルトは次のとおりです。label.title()
AppConfig.path
アプリケーションディレクトリの例:'/usr/lib/pythonX.Y/dist-packages/django/contrib/admin'
多くの場合、Djangoはそれを自動的に検出して設定できますが、AppConfigサブクラスを介してクラス属性を明示的にオーバーライドできます。
読み取り専用属性
AppConfig.module
ルートモジュールの例:<module'django.contrib.admin' from'django / contrib / admin / __init__。py'>
AppConfig.models_module
モデルの例を含むモジュール:<module'django.contrib.admin.models' from'django / contrib / admin / models.py'>
モデルが含まれていない場合は、Noneにすることもできます。
メソッド
AppConfig.get_models()
アプリケーション用に反復可能なModelクラスを返すのに役立ちます。 アプリレジストリに完全に入力する必要があります。
AppConfig.get_model
大文字と小文字を区別しない特定のモデルを返します:model_name。 Model_name
特定のモデルが存在しない場合は、LookupErrorを発生させるのに役立ちます。 アプリレジストリに完全に入力する必要があります。
AppConfig.ready()
メソッドをオーバーライドして、シグナルの登録などの初期化タスクを実行するのに役立ちます。 レジストリが完全に入力されたら呼び出すことができます。 ただし、AppConfigのクラスが定義されているモジュールレベルでモデルをインポートすることはできません。 ただし、get_model()またはimportステートメントを使用するready()でそれらをインポートできます。
アプリとして使用される名前空間パッケージ
Pythonパッケージに__init__。pyがない場合、それらは名前空間パッケージと呼ばれます。 それらは、sys.path上の複数のディレクトリと場所に分散できます。 Djangoアプリケーションには、構成に基づいてDjangoが静的アセットやテンプレートなどを検索するサインベースファイルシステムが必要です。したがって、Djangoアプリケーションは、次のいずれかが当てはまる場合にのみ使用できます。
- 名前空間パッケージには1つの場所があります。
- アプリケーションの構成に使用されるAppConfigクラスには、パスクラス属性があります。
いずれの条件も満たされない場合、DjangoはImproperlyConfiguredを表示します。
Djangoアプリケーションレジストリ
特定のパブリックAPIは、アプリケーションレジストリによって提供されます。 これらはいくつかの方法ですが、変更される可能性があります。
apps.ready
ブール属性がTrueに設定され、レジストリが完全に設定されている場合、すべてのAppConfig.ready()メソッドが呼び出されます。
apps.get_app_configs()
反復可能なAppConfigインスタンスを返します。
apps.get_app_config(app_label)
指定されたapp_labelを持つアプリケーションのAppConfigを返します。 アプリケーションが存在しない場合、LookupErrorが発生します。
apps.is_installed( 現在のレジストリに特定のアプリケーションの名前が存在するかどうかをチェックします。 app_nameはアプリのフルネームになります。例:django.contrib.admin
apps.get_model( 指定されたmodel_nameとapp_labelを持つモデルを返します。 アプリケーションが存在しない場合、LookupErrorが発生します。
初期化プロセス
だから、今問題はdjangoアプリケーションをロードする方法です。 Djangoが開始されると、django.setup()がレジストリにデータを入力します。
setup( set_prefix = True )
Django構成が発生します:
- 最初に設定をロードする
- セットアップのログイン
- set_prefixがtrueの場合、URLリボルバースクリプトプレフィックスは、定義されているかどうかにかかわらず、FORCE_SCRIPT_NAMEになります。
- アプリケーションレジストリが初期化されます。
関数の自動呼び出しが発生します:

- HTTPサーバーがDjangoのWSGIサポートを介して実行されている場合
- 管理コマンドが呼び出されたとき。
トラブルシューティング
直面する可能性のあるいくつかの一般的な問題は次のとおりです。
- AppRegistryNotReady:アプリケーション構成またはモデルモジュールのインポート中に発生し、アプリレジストリに依存しないコードをトリガーします。 ORMを使用してデータベースクエリを実行すると、この問題が発生する可能性があります。
- ImportError:名前をインポートできません…–インポートシーケンスがループで終了したときに発生します。 モデルモジュール間の依存関係を最小限に抑えることで、プロセスを排除できます。
- Django.contrib.adminにより、管理モジュールが自動的に検出されます。 INSTALLED_APPSをdjango.contrib.adminからdjango.contrib.admin.apps.SimpleAdminConfigに変更して、それを防ぎます。
うまくいけば、DjangoアプリケーションをWeb開発に簡単に統合できるようになりました。
世界のトップ大学からソフトウェア開発コースを取得します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。
結論
Djangoやその他のフルスタック開発者の言語とツールについて詳しく知りたい場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニングを提供します。 9以上のプロジェクトと割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。
