models.pyファイルにシグナルハンドラ関数を定義しました。そのファイルの末尾には、http://docs.djangoproject.com/en/dev/topics/signals/のドキュメントで推奨されているようにsignals.post_save.connect(myhandler, sender=myclass)
を使用しています。django1.1テストサーバーに複数回登録された信号
しかし、私がテストサーバーを実行すると、単純なprint-statementデバッグでは、models.pyファイルが2回インポートされ、(私が知る限り)シグナルハンドラが2回登録されます。これは、すべてのアクションが2回処理されることを意味します。これは明らかに意図された動作ではありません。
モデルの確認フェーズで最初のインポートが実行されたように見えます。サーバーが最初に処理した要求でモデル自体が必要な場合は、2番目の処理が正しく実行されます。
シグナルハンドラを他の場所に登録する必要がありますか?これは1.1テストサーバーのバグですか?私は何か他のものを逃している?
素晴らしい!これはまさに私が探していたものですが、それは私の問題を解決します。それはまだ私が作成するすべてのユニークなシグナルハンドラのためにこれを行う必要が少し不器用な感じですが、何が動作...私は1.1でこの動作が変更されたのだろうかと思う。 –
この動作は信号が十分にサポートされていないために変更されます。あなたが必要とするほとんどのものは、 'save'をオーバーライドすることによって実行できます。 –
'save 'をオーバーライドするタイミングとシグナルを使用するタイミングについては、http://stackoverflow.com/questions/170337/django-signals-vs-overriding-save-methodを参照してください。 –