3

django のシグナルへの接続に問題があります。http://dmitko.ru/?p=546にあるチュートリアルに従って、ユーザー登録を延長しようとしました。

django-registration を正しくセットアップしました。正常に動作しています。デバッグ目的で、次のコードを urls.py に追加しました。

from registration.signals import user_registered

def log_user_created(sender, user, request, ** kwargs):
  logger.debug("got USER_REGISTERED signal")

if settings.DEBUG:
  logger.debug("registering debug signal listeners")
  user_registered.connect(log_user_created)
else:
  logger.debug("debuging signals not enabled")    

ただし、log_user_created 関数は呼び出されません。

私の質問は、user_registered 信号が飲み込まれている場所を確認するためにアプリをデバッグするにはどうすればよいですか?

注: 私のバージョンの django-registration が正しく動作することを確認しました。上記のブログのサンプルアプリのバージョンにバージョンを切り替えました。観察された動作は変わりませんでした。

4

3 に答える 3

6

シグナルに接続するコードとシグナルを送信するコードの両方が同じパスでインポートされていることを確認してください。たとえば、信号を次のように接続するとします。

from myapp.registration.signals import user_registered
user_registered.connect(...)

その後、このシグナルを送信するときに、インポートする必要があります

from myapp.registration.signals import user_registered

( myapp.に注意してください。 )ではなく:

from registration.signals import user_registered

そうしないと、2 つの異なるシグナルとして扱われます。

于 2013-01-19T01:50:21.830 に答える
0

user_registered.connect(user_created)リンクした例に示すようにregbackend.py(urls.pyではなく) 入れようとしましたか?

この質問で、シグナルを最適に接続する場所に関する追加情報を見つけることができます。

が正しく呼び出されているかどうかを確認するには、関数user_registeredの先頭にデバッグ呼び出しを追加するだけです。user_created

django-debug-toolbarは、その特定の機能を使用していませんが、別のオプションになる可能性があります。

現在、次のパネルが作成され、機能しています。

  • シグナル、その引数、およびレシーバーのリスト
于 2011-05-16T06:30:45.507 に答える