簡體   English   中英

AbstractUser 上的 request.user 給出 AnonymousUser TypeError

[英]request.user on AbstractUser gives AnonymousUser TypeError

在 AbstractUser model 上調用 request.user 會給出 TypeError 'AnonymousUser' object 是不可迭代的。

我創建了一個抽象用戶 model 如下:

class User(AbstractUser):
    username            = models.CharField(blank=True, null=True, max_length=30)
    email               = models.EmailField(_('email address'), unique=True)

    USERNAME_FIELD      = 'email'
    REQUIRED_FIELDS     = ['username', 'first_name', 'last_name']

    def __str__(self):
        return "{}".format(self.email)

我將 JSON Web 令牌添加到我的用戶 model。 當我將 go 轉到特定的 URL 時,我想獲取當前用戶的詳細信息。 為此,我在views.py中嘗試了這個:

@api_view(['GET'])
def getUserProfile(request):
    user = request.user
    serializer = UserSerializer(user, many=True)
    return Response(serializer.data)

這在 serialisers.py

from django.conf import settings
User = settings.AUTH_USER_MODEL

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

現在,當我從 go 到調用此視圖的 url 時,我得到 TypeError 'AnonymousUser' object is not iterable。 我認為這是因為 request.user 無法識別我的 AbstractUser。 即使我已登錄,也會出現此問題。如何解決此問題?

在您的views.py中,您設置serializer = UserSerializer(user, many=True) 通過設置many=True ,您告訴 DRF 查詢集包含多個項目。 但這里的user是單個 object。 這就是導致異常的原因。 嘗試像這樣刪除該部分:

serializer = UserSerializer(user)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM