Django Rest Framework 令牌不会自动生成

Django Rest Framework Tokens Are Not Being Automatically Generated

我正在(尝试)使用 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' table。但是,尽管创建了 'authtoken_token' table,但没有添加任何内容。这让我相信我的@reciever 可能无法正常工作。

不过,我可以使用 Django shell 手动创建令牌。这些令牌将正确添加到 authtoken_token table.

如有任何帮助,我们将不胜感激,

谢谢

要检查的事项:

  • 接收者是否运行?里面加个print或者log,检查是不是第一时间调用的
  • 如果未定义 AUTH_USER_MODEL,您可能需要使用 get_user_model() 代替
  • 确保此代码位于 settings.INSTALLED_APPS
  • 中应用程序的 models.py 文件中

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