未经身份验证的路由 Django 上的 AnonymousUser 错误
AnonymousUser error on unauthenticated route Django
我基本上是一个有限元开发者。最近我正在尝试编辑 Django 项目并从 api 中删除身份验证。因此,在删除身份验证并尝试在没有令牌的情况下获取数据后,它会显示匿名错误。适用于有效用户
django_1 | return method(value)
django_1 | File "/app/deals/serializers.py", line 285, in get_already_liked
django_1 | return usr.is_liking_deal(deal_obj=obj)
django_1 | AttributeError: 'AnonymousUser' object has no attribute 'is_liking_deal'
这是序列化器中的具体代码
def get_already_liked(self, obj):
usr = self.context["request"].user
return usr.is_liking_deal(deal_obj=obj)
在深入研究问题后,我发现这是模型和主键的问题。因为我没有通过身份验证发送用户 Django 将其视为 AnonymousUser 并且在模型 AnonymousUser 中没有任何主要 key.Here 是模型中的相关代码(我认为)
class DealReactionManager(models.Manager):
@staticmethod
def is_user_liking_deal(user, deal):
"""Has user liked the deal already?"""
try:
DealReaction.objects.get(user=user, deal=deal)
return True
except DealReaction.DoesNotExist:
return False
class DealReaction(BaseModel):
deal = models.ForeignKey(to="deals.Deal", related_name="reactions", on_delete=models.CASCADE)
user = models.ForeignKey(to=get_user_model(), related_name="reactions", on_delete=models.CASCADE)
objects = DealReactionManager()
class Meta:
unique_together = ("deal", "user")
我从中可以理解的是,在调用交易 api 之后,它会查找用户喜欢的交易以及其他交易。我需要让它看起来像如果有用户它将去搜索已经喜欢的交易+其他交易如果没有那么它只会 return 交易。
我怎样才能实现解决方案?对不起,我在 atm 周围没有任何后端开发人员。
我通过检查序列化程序中的身份验证简单地解决了这个问题。
def get_already_liked(self, obj):
if self.context["request"].user.is_authenticated:
return self.context["request"].user.is_liking_deal(deal_obj=obj)
我基本上是一个有限元开发者。最近我正在尝试编辑 Django 项目并从 api 中删除身份验证。因此,在删除身份验证并尝试在没有令牌的情况下获取数据后,它会显示匿名错误。适用于有效用户
django_1 | return method(value)
django_1 | File "/app/deals/serializers.py", line 285, in get_already_liked
django_1 | return usr.is_liking_deal(deal_obj=obj)
django_1 | AttributeError: 'AnonymousUser' object has no attribute 'is_liking_deal'
这是序列化器中的具体代码
def get_already_liked(self, obj):
usr = self.context["request"].user
return usr.is_liking_deal(deal_obj=obj)
在深入研究问题后,我发现这是模型和主键的问题。因为我没有通过身份验证发送用户 Django 将其视为 AnonymousUser 并且在模型 AnonymousUser 中没有任何主要 key.Here 是模型中的相关代码(我认为)
class DealReactionManager(models.Manager):
@staticmethod
def is_user_liking_deal(user, deal):
"""Has user liked the deal already?"""
try:
DealReaction.objects.get(user=user, deal=deal)
return True
except DealReaction.DoesNotExist:
return False
class DealReaction(BaseModel):
deal = models.ForeignKey(to="deals.Deal", related_name="reactions", on_delete=models.CASCADE)
user = models.ForeignKey(to=get_user_model(), related_name="reactions", on_delete=models.CASCADE)
objects = DealReactionManager()
class Meta:
unique_together = ("deal", "user")
我从中可以理解的是,在调用交易 api 之后,它会查找用户喜欢的交易以及其他交易。我需要让它看起来像如果有用户它将去搜索已经喜欢的交易+其他交易如果没有那么它只会 return 交易。 我怎样才能实现解决方案?对不起,我在 atm 周围没有任何后端开发人员。
我通过检查序列化程序中的身份验证简单地解决了这个问题。
def get_already_liked(self, obj):
if self.context["request"].user.is_authenticated:
return self.context["request"].user.is_liking_deal(deal_obj=obj)