Django で、別のシグナルでアクションを生成するとはどういう意味ですか?
たとえば、このドキュメントは次のとおりです: https://github.com/brantyoung/django-notifications
それは次のように述べています:通知の生成は、おそらく別のシグナルで行うのが最善です。
Django で、別のシグナルでアクションを生成するとはどういう意味ですか?
たとえば、このドキュメントは次のとおりです: https://github.com/brantyoung/django-notifications
それは次のように述べています:通知の生成は、おそらく別のシグナルで行うのが最善です。
あなたが言及したドキュメントには、例で使用される2つのシグナルがあります。最初のものはnotifications.notify
で、もう 1 つはdjango.db.models.signals.post_save
です。
通知アプリを使用するには、基本的に最初の信号のみが必要です。たとえば、コード内の任意の場所に次のように記述できます。
notify.send(request.user, verb='reached level 10')
ただし、ライターは、別のシグナルを処理した後(または処理するとき) に通知シグナルを送信することをお勧めします。したがって、以下の例:
def my_handler(sender, instance, created, **kwargs):
#other routines here
notify.send(instance, verb='was saved')
post_save.connect(my_handler, sender=MyModel)
つまり、通知シグナルを post_save シグナル ハンドラーの一部として送信します。
Django にはsignalling system
、特定のイベントが発生したときに起動される関数 (シグナル ハンドラー) を簡単にアタッチできる があります。モデルオブジェクトが保存または削除されたときなど、デフォルトのイベントがいくつかありますが、独自のイベントを作成して、後でコードを簡単に添付することもできます。
https://docs.djangoproject.com/en/dev/topics/signals/
Django には「シグナル ディスパッチャー」が含まれており、フレームワーク内の別の場所でアクションが発生したときに分離されたアプリケーションに通知できるようにします。簡単に言えば、シグナルを使用すると、特定の送信者が一連の受信者に何らかのアクションが発生したことを通知できます。これらは、多くのコードが同じイベントに関係している可能性がある場合に特に役立ちます。
これらに関して注意すべき非常に重要なことsignals
は、これらのアクションがリクエスト/レスポンス ループの外で非同期に起動されると考えがちですが、そうではないということです。これらはイベントにアクションを追加する直感的な方法です (つまり、X が保存されたら Y を実行します)。