[英]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.