Django rest framework 如何在Django Rest框架中验证用户url与令牌中的用户匹配

Django rest framework 如何在Django Rest框架中验证用户url与令牌中的用户匹配,django-rest-framework,Django Rest Framework,我试图在DRF中创建一个对象(称为Post),其中一个字段是user,它应该表示创建该对象的用户。我正在使用令牌身份验证,我希望确保request.user与传递给对象的用户匹配。但是,我使用的是HyperlinkedModelSerializer,因此我将用户的url传递给PostSerializer 如何获取request.user的url?我必须在我的用户中创建url字段吗 以下是序列化程序类: class UserSerializer(serializers.HyperlinkedMod

我试图在DRF中创建一个对象(称为Post),其中一个字段是
user
,它应该表示创建该对象的用户。我正在使用令牌身份验证,我希望确保request.user与传递给对象的用户匹配。但是,我使用的是HyperlinkedModelSerializer,因此我将用户的url传递给PostSerializer

如何获取request.user的url?我必须在我的用户中创建url字段吗

以下是序列化程序类:

class UserSerializer(serializers.HyperlinkedModelSerializer):
    User = get_user_model()
    password = serializers.CharField(write_only=True)

    class Meta:
        model = User
        fields = ('username', 'password')

    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        return user


class PostSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = Post
        fields = ('id', 'user', 'caption', 'video_link')

    def create(self, validated_data):
        return Post(**validated_data)
这是视图集

class PostViewSet(viewsets.ModelViewSet):
    serializer_class = PostSerializer
    queryset = Post.objects.all()
    permission_classes = (IsAuthenticated, IsOwnerOrReadOnly)

如果用户登录到系统,您可以按如下方式重写PostSerializer:

class PostSerializer(serializers.ModelSerializer):

    class Meta:
        model = Post
        fields = ('caption', 'video_link')

    def create(self, validated_data):

        post = Post(user=self.request.user, caption=validated_data['caption'], video_link=validated_data['video_link'])
        post.save()
        return validated_data

您可以添加序列化程序类吗?刚刚添加在父类中。如何在发送请求时发送令牌?我在您的视图类中找不到任何令牌身份验证