Djangoアプリケーション:2022年に知っておくべきことすべて

公開: 2021-01-04

Djangoは、専門家によって構築されたトップの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卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。

未来のキャリアに備える

ソフトウェアエンジニアリングの修士号を今すぐ申し込む