revision-up-to: | 8961 (1.0) |
---|
ここでは、 Django が送信する組み込みのシグナルについて解説します。
See also
コメントフレームワーク は、 コメントに関するシグナル を送信し ます。
django.db.models.signals モジュールでは、モデルシステムから送信され るシグナルを定義しています。
Warning
ここに挙げるシグナルの多くは、 __init__() や save() といった、オーバライド可能な様々 なメソッドから送信されます。
従って、これらのメソッドをオーバライドする場合、親クラスのメソッドを呼 び出して、シグナルが送信されるようにせねばなりません。
Django モデルをインスタンス化するとき、モデルの __init__() 処理の最初の段階で送信されます。
シグナルの引数は以下の通りです:
例えば、 チュートリアル には以下のような行があり ます:
p = Poll(question="What's up?", pub_date=datetime.now())
この行の中で送信されるシグナルを pre_init ハンドラで受けたときの引 数は以下の通りです:
引数 | 値 |
---|---|
sender | Poll (クラス自体) |
args | [] (__init__ には固定引数がないので空) |
kwargs | {'question': "What's up?", 'pub_date': datetime.now()} |
pre_init とほぼ同じですが、 __init__() の処理が終る直前に送信されます。
引数は以下の通りです:
モデルインスタンスの save() の処理の最初に呼 び出されます。
引数は以下の通りです:
pre_save に似ていますが、 save() メソッ ドの処理の最後に呼び出されます。
引数は以下の通りです
モデルインスタンスの delete() メソッドの処理 の先頭で呼出されます。
引数は以下の通りです:
pre_delete に似ていますが、 delete() メソッドの処理の最後に呼び出されます。
引数は以下の通りです:
削除されたインスタンスです。
オブジェクトはもはやデータベース上に存在しないので、このインスタン スの扱いには十分注意してください。
django-admin の送信するシグナルです。
syncdb でアプリケーションがインストールされると送信されます。
このシグナルを待ち受けるハンドラは、 INSTALLED_APPS に登録されて いるいずれかのアプリケーションの management モジュール内に定義せねばな りません。それ以外の場所にハンドラを定義しても、 syncdb はハンド ラをロードしません。
引数は以下の通りです:
manage.py がどれくらいの情報をスクリーンに表示しているかを示す値で す。詳しくは --verbosity` フラグを参照してください。
post_syncdb を待ち受けている関数は、この引数の値に従って、 スクリーンに表示するメッセージの量を調整してください。
コアフレームワークがリクエストを処理する際に送信するシグナルです。
Djang が HTTP リクエストを送信する直前に送信されます。
引数は以下の通りです:
Django が HTTP リクエストの処理を終了した直後に呼び出されます。
引数は以下の通りです:
このシグナルは、 Django が HTTP リクエストの処理中に例外に遭遇したときに送 信されます。
引数は以下の通りです:
Aug 31, 2012