如何获取Django-Rest-Framework序列化程序中的Request.User?
我试过这样的东西,这是行不通的。
class PostSerializer(serializers.ModelSerializer): class Meta: model = Post def save(self): user = self.context['request.user'] title = self.validated_data['title'] article = self.validated_data['article'] 我需要一种能够从我的Serializer类访问request.user的方法。
 你不能直接访问request.user 。 您需要访问请求对象,然后获取用户属性。 
喜欢这个:
 user = self.context['request'].user 
或者为了更安全,
 user = None request = self.context.get("request") if request and hasattr(request, "user"): user = request.user 
更多关于额外的上下文可以在这里阅读
其实,你不必打扰上下文。 有一个更好的方法来做到这一点:
 from rest_framework.fields import CurrentUserDefault class PostSerializer(serializers.ModelSerializer): class Meta: model = Post def save(self): user = CurrentUserDefault() # <= magic! title = self.validated_data['title'] article = self.validated_data['article'] 
正如伊戈尔在其他答案中提到的,使用可以使用CurrentUserDefault。 如果您不想为此重写save方法,请使用doc :
 from rest_framework import serializers from rest_framework.fields import CurrentUserDefault class PostSerializer(serializers.ModelSerializer): user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault()) class Meta: model = Post