Django Rest框架令牌未自动生成

时间:2016-06-30 14:24:56

标签: python django database django-rest-framework token

我(尝试)使用Django Rest Framework的基于令牌的身份验证。我的应用 models.py

中有以下内容
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)

每当我创建一个新帐户(通过'createsuperuser'或使用我的注册表单)时,用户都会正确添加到'auth_user'表中。但是,尽管创建了'authtoken_token'表,但没有添加任何内容。这让我相信我的@reciever可能无法正常工作。

然而,我可以使用Django shell手动创建令牌。这些令牌将被正确添加到authtoken_token表中。

非常感谢任何帮助,

由于

1 个答案:

答案 0 :(得分:1)

要检查的事项:

  • 接收器是否正在运行?在里面添加一个打印或日志以检查它是否在第一时间被调用
  • 如果未定义AUTH_USER_MODEL,您可能需要使用get_user_model()代替
  • 确保此代码位于models.py
  • 中的应用的settings.INSTALLED_APPS文件中

我已经使用DRF好几年了,从来没有遇到过这个问题。以上之一可能是你的罪魁祸首。