2016-11-03 11 views
1

1日以上座っています。ユーザーがアクティブになったときにこの信号がトリガーされない理由、エラーログがないこと、アクティベーションの管理者に例外がないことは、実際には理解できません。誰でも助けることができますか?次のコードは、Apacheのエラーログにログメッセージが表示されるはずです。すべてのIMのuser_registeredシグナルがなぜトリガされないのですか?

答えて

3

まず、同じ

import logging 
from django.dispatch import receiver 
from registration.signals import user_activated 

@receiver(user_activated) 
def registered_callback(sender, **kwargs): 
    logger = logging.getLogger("user-activated") 
    logger.error("activated here") 

1.8.3ジャンゴを使用した。あなたは、最初にあなたの信号を登録する必要があります。限り、私は知っている、それを行うにはいくつかの方法がありますが、これは何をやっているのですか。 あなたのアプリにsignals.pyを作成するとそこに信号が書き込まれます。

from django.db.models.signals import post_save 
from django.dispatch import receiver 
@receiver(post_save, sender=your_model,dispatch_uid="yourmodel_save_receiver") 
      def post_save_yourmodel(sender, instance, **kwargs): 
       if instance.profile_status: 
        print "active" 
       else: 
        print "not active" 

次に、apps.pyを作成する必要があります。このファイルには、モデルの構成情報が含まれています。これにより

from django.apps import AppConfig 
class yourmodel_config(AppConfig): 
    name = 'yourmodel_config' 
    verbose_name = 'your_model config' 

    def ready(self): 
     import yourmodel.signals 

あなたのアプリケーションの準備ができている時はいつでも、あなたの信号が 最後に、あなたの__init__.pyを開き、次の追加インポートされます。これまでyourmodelは、保存されたprofile_status属性の信号をチェックし、値(trueまたはfalse)に応じた出力を印刷しているとき、あなたのmodel.Thisの例えばアプリケーション構成を定義している。これにより

default_app_config = 'yourmodel.apps.yourmodel_config' 

コンソールへ。 createdパラメータをモデルに追加して、モデルのインスタンスが作成されているかどうかを知ることもできます。新しいレコードが作成された場合、createdはTrueを返します。 def post_save_yourmodel(sender, instance, created, **kwargs):。そうしないと、モデルがyourmodel.save()で保存されるたびにこの信号がトリガーされます。 post_saveの例を考えてみましょう。hereからモデル信号のリストを見つけることができます。

+0

私が正しく理解していれば、新しい信号を正しく作る方法を記述していますか?私はあらかじめ定義されたものを使用しています。私が何か間違っていないなら、私が使用しているフレームワーク(django-registration、または私がそれらのために使用しているテンプレート)にバグがあります。だから、質問は "あなたはスペルミスを見たり、これはバグだと思いますか?" – erikbwork

+0

はい、これは新しい信号を実装する方法です。私はあなたの問題はバグだとは思わない。このpost_save.connect(registered_callback、sender = mymodel)のようなアプリには、受信者に署名する必要があります。たぶんこれはあなたのレシーバーが何のシグナルもキャッチしなかった理由ですが、あなたの方法についての経験はありませんので、あなたの問題は何か分かりません。 – Brkyrn

+0

[登録文書](http://django-registration.readthedocs.io/en/2.0.1/signals.html)の解釈はどうですか?私は彼らがすでに信号を実装していることについてかなり自信があると言います。そして、私が二番目に登録していない限り、彼らの一人は働く。私は受信を追加すると別のものを引き起こさないようにするか副作用を加えるべきだとは思わない。 – erikbwork

関連する問題