Django rest api中不存在/api/users标记匹配查询处的DoesNotExist
我尝试了这么久,但每次都失败了。我想返回与令牌关联的特定用户。前端开发人员将发送一个头部带有令牌的请求,我需要在该用户登录后返回该用户 我的看法是:Django rest api中不存在/api/users标记匹配查询处的DoesNotExist,django,authentication,django-rest-framework,token,http-token-authentication,Django,Authentication,Django Rest Framework,Token,Http Token Authentication,我尝试了这么久,但每次都失败了。我想返回与令牌关联的特定用户。前端开发人员将发送一个头部带有令牌的请求,我需要在该用户登录后返回该用户 我的看法是: class UsersListView(ListAPIView): serializer_class = UserListSerializer def get(self, request, *args, **kwargs): user = Token.objects.get(key="token&qu
class UsersListView(ListAPIView):
serializer_class = UserListSerializer
def get(self, request, *args, **kwargs):
user = Token.objects.get(key="token").user
return self.list(request, user)
我还尝试了这个返回令牌匹配查询不存在的方法
class UsersListView(ListAPIView):
serializer_class = UserListSerializer
def get_queryset(self):
return User.objects.filter(user =Token.objects.get(key="token").user)
我的序列化程序是:
class UserListSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
我的用户模型是:
class UserManager(BaseUserManager):
def create_user(self, email, password=None, **kwargs):
"""Creating new user and saving the user."""
if not email:
raise ValueError('Admin must have a valid email')
user = self.model(email=self.normalize_email(email), **kwargs)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password):
"""Creates and saves a new super user"""
user = self.create_user(email, password)
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
#
#
class User(AbstractBaseUser, PermissionsMixin):
""" Custom user model that supports using email instead of username """
email = models.EmailField(max_length=255, unique=True)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=True)
objects = UserManager()
USERNAME_FIELD = 'email'
您必须将头中传递的令牌值作为令牌值传递,而不是字符串“token”
user = Token.objects.get(key=request.META.get('HTTP_AUTHORIZATION') ).user