【问题标题】:Django Rest Framework Tokens Are Not Being Automatically Generated没有自动生成 Django Rest Framework 令牌
【发布时间】:2016-11-02 17:21:13
【问题描述】:

我正在(尝试)使用 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 表中。

对此的任何帮助将不胜感激,

谢谢

【问题讨论】:

  • 您是否在settings.py 中明确定义了AUTH_USER_MODEL?否则,你总是可以使用get_user_model()
  • 我没有明确定义它。我刚刚尝试使用 get_user_model() 但是我得到了相同的结果。
  • 您是否配置了日志记录?尝试在接收器中打印或记录某些内容,看看它是否正在运行。
  • 不,我没有配置日志记录。我现在就设置它

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


【解决方案1】:

检查事项:

  • 接收器是否正在运行?在里面添加一个 print 或 log 以检查它是否首先被调用
  • 如果未定义AUTH_USER_MODEL,您可能需要改用get_user_model()
  • 确保此代码位于settings.INSTALLED_APPS 中的应用程序的models.py 文件中

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

【讨论】:

  • 添加打印的最佳方法是什么?我已经使用了 get_user_model() 并且我确定该应用程序在 settings.INSTALLED_APPS 所以我的猜测是接收器没有加载
  • ...print "Hello World"
  • 嗯。认为它比这更复杂。这会简单地打印到 Django 控制台吗?
  • 如果接收器正在运行的话!你检查过models.py中的代码吗?
  • 我现在收到此错误:“django.core.exceptions.AppRegistryNotReady:尚未加载模型。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 2016-10-20
  • 1970-01-01
  • 2017-03-30
  • 2019-02-03
  • 1970-01-01
相关资源
最近更新 更多