[解決済み] AppConfig.ready()のオーバーライド
質問
Django の基本を掴もうとしています。特に、アプリケーションがどのように動作するか。 ドキュメントを参照してください。 https://docs.djangoproject.com/en/stable/ref/applications/#methods
そして、クラスAppConfigのコードには、次のように書かれています。
def ready(self):
"""
Override this method in subclasses to run code when Django starts.
"""
さて、これは私の例です。
my_app/apps.py
class MyAppConfig(AppConfig):
name = 'my_app'
def ready(self):
print('My app')
私はただ、ready メソッドを動作させたいだけです。つまり、Django が my_app を見つけたら、 ready メソッドを実行させればいいのです。
アプリは INSTALLED_APPS に登録されています。
python manage.py runserver'を実行してみます。そして何も出力されません。
readyメソッドの中でブレークポイントを置くと、デバッガはそこで止まりません。
私の理解は間違っているのか、教えてください。よろしくお願いします。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'my_app',
]
そして、ビューを作成しました
my_app/views.pyを作成します。
def index(request):
print('Print index')
urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', my_app_views.index, name='home')
]
さて、ビューが動作していますね。これは、アプリケーションが登録されていることを意味します。
どのように解決するのですか?
次の2つのうちどちらかを行う必要があります。明示的にどの
AppConfig
の中で
INSTALLED_APPS
:
INSTALLED_APPS = [
'my_app.apps.MyAppConfig'
]
あるいは
default_app_config
の中に
__init__.py
を追加してください。
# my_app/__init__.py
default_app_config = 'my_app.apps.MyAppConfig'
(そして
INSTALLED_APPS
をそのままにする)。
現状では、Django はどのような
AppConfig
を見つけることができず、単に無いものとみなしてしまいます。そのため、ビューなどは動きますが
ready()
メソッドが呼び出されることはありません。
ここで に関連する部分です。 .
Edit
: Django 3.2 以降では、以下のように
default_app_config
の指定はもはや必要ありません。
を指定する必要がなくなり、事実上非推奨となっている
- であるため、Django 3.2 以降を使用している人にとって、この回答は冗長です。
関連
-
ImproperlyConfiguredです。DEFAULT_INDEX_TABLESPACE の設定を要求されましたが、設定されていません。
-
[解決済み] Django の管理者パスワードをリセットする方法は?
-
[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
-
[解決済み] Django で完全な/絶対的な URL (ドメイン付き) を取得するにはどうすればよいですか?
-
[解決済み] Django のクエリで OR フィルタを行うにはどうすればよいですか?
-
[解決済み] [Solved] カスタムDjango manage.pyコマンドをテストドライバから直接呼び出すにはどうしたらいいですか?
-
[解決済み] Django REST フレームワーク: 非モデルシリアライザー
-
[解決済み] Docker-Compose使用時にDjangoデータベースのマイグレーションをどのように行うか?
-
[解決済み] Django テンプレート url タグに url パラメータを追加する方法は?
-
[解決済み] Django が ManyToMany リレーションシップからオブジェクトを取り除く
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
Djangoの基本(16)。テンプレートタグの紹介とそのカスタマイズ方法
-
django のクエリセット操作
-
ImproperlyConfiguredです。DEFAULT_INDEX_TABLESPACE の設定を要求されましたが、設定されていません。
-
[解決済み] DjangoとReactJSを連携させる方法とは?
-
[解決済み] Djangoです。文字列からモデルを取得する?
-
[解決済み] Django Southを使用して移行履歴をリセットするための推奨される方法は何ですか?
-
[解決済み] DjangoのRest Frameworkはcsrfを削除します。
-
[解決済み] Django - 外部キーのプロパティでフィルタリングする
-
[解決済み] Django の DoesNotExist 例外はどのようにインポートしますか?