Django rest framework 如何在Django Rest框架中验证用户url与令牌中的用户匹配
我试图在DRF中创建一个对象(称为Post),其中一个字段是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
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
您可以添加序列化程序类吗?刚刚添加在父类中。如何在发送请求时发送令牌?我在您的视图类中找不到任何令牌身份验证