Django 起動時に実行する単一実行コードの取得
Django アプリケーションを開発する場合、特定のコードを実行する必要がある場合があります。起動時に 1 回のみ (通常は初期化目的)。ただし、この目的でミドルウェア クラスを使用すると、Django ミドルウェア システムがリクエストのたびに各ミドルウェアの __init__() メソッドを呼び出すため、複数の実行が発生する可能性があります。
Django の Django ソリューション < 1.7
1.7 より前のバージョンの Django でこの問題に対処するには、INSTALLED_APPS の 1 つの __init__.py ファイル内にスタートアップ コードを配置することが効果的な方法の 1 つです。たとえば、myapp アプリケーションでは、myapp/__init__.py に次のコードを含めることができます。
<code class="python">def startup(): pass # Place your startup code here startup()</code>
このアプローチにより、startup() 関数が Django の起動中に実行され、Django の起動時に再び呼び出されないようになります。
Django 1.7 以降向けの改善されたソリューション
Django バージョン 1.7 では、この要件に対してより洗練されたソリューションが導入されました。アプリケーションの apps.py ファイル内で ready() メソッドを使用して AppConfig クラスを実装すると、アプリケーションが準備完了としてマークされたときに実行されるコードを指定できます。 myapp アプリケーションを使用した例を次に示します。
<code class="python"># myapp/apps.py from django.apps import AppConfig class MyAppConfig(AppConfig): name = 'myapp' verbose_name = "My Application" def ready(self): pass # Place your startup code here</code>
このアプローチにより、スタートアップ コードをより自然に定義して実行できるようになり、Django 1.7 以降で推奨されるソリューションです。
以上がDjango の起動時にコードを 1 回実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。