2016-06-30 17 views
0

Django Rest Frameworkのトークンベース認証を使用しようとしています。私は(私の登録フォームを使用していずれかの「createsuperuser」を介してまたはで)新しいアカウントを作成するたびにDjango Restフレームワークトークンが自動的に生成されない

from django.db.models.signals import post_save 
from django.dispatch import receiver 
from rest_framework.authtoken.models import Token 
from django.conf import settings 

@receiver(post_save, sender=settings.AUTH_USER_MODEL) 
def create_auth_token(sender, instance=None, created=False, **kwargs): 
    if created: 
     Token.objects.create(user=instance) 

は、ユーザーが正しく「AUTH_USER」テーブルに追加された私のアプリのmodels.pyで、次のしています。ただし、 'authtoken_token'テーブルは作成されますが、何も追加されません。これは私の@recieverが適切に動作していない可能性があると私に信じさせます。

ただし、Djangoシェルを使用して手動でトークンを作成することはできます。これらのトークンは、authtoken_tokenテーブルに正しく追加されます。

この上の任意の助けをいただければ幸いです、

チェックするためのおかげ

+0

AUTH_USER_MODELが 'settings.py'で明示的に定義されていますか?それ以外の場合は、常に 'get_user_model()'を使用することができます。 –

+0

明示的に定義していません。私は今、get_user_model()を使ってみましたが、同じ結果が表示されています。 – ethanzh

+0

ログが設定されていますか?受信者に何かを印刷したりログしたりして、それが実行中であるかどうかを確認してください。 –

答えて

1

もの:

  • でも実行されている受信機ですか? AUTH_USER_MODELが定義されていない場合、あなたはこのコードがあるアプリのmodels.pyファイル内にあることを確認してください代わりにget_user_model()
  • を使用する必要があり、印刷を追加するか、それが最初の場所
  • に呼び出されることを確認するために内部のログin settings.INSTALLED_APPS

私はDRFを数年間使用していましたが、この問題は一度もありませんでした。上記のうちの1つは、おそらくあなたの原因です。

+0

プリントを追加する最良の方法は何ですか?私はget_user_model()を使用して、私はアプリがsettings.INSTALLED_APPSにあると確信していますので、私の推測では、受信者はロードされません。 – ethanzh

+0

... 'print" Hello World "' –

+0

Huh。それはそれよりもはるかに関わっていると考えました。これは単にDjangoコンソールに出力されますか? – ethanzh

関連する問題