Python 如何在Django rest API中从ModelViewSet类获取请求的用户名?

Python 如何在Django rest API中从ModelViewSet类获取请求的用户名?,python,django,api,rest,django-rest-framework,Python,Django,Api,Rest,Django Rest Framework,我有以下代码。 它允许使用Django中的RESTAPI上传图像。 然而,由于此类的性质,我无法以通常的方式获取用户(request.user) view.py url.py 如果要将用户添加到Photo实例,请在PhotoSerializer(作为只读字段)中使用,或在视图的执行创建中使用,您不能。。。即使在没有HTTP请求的情况下,信号也可能触发,并且不知道是什么触发了模型上的保存。如果您希望能够对用户执行某些操作,那么您需要在视图方法/类中而不是在信号处理程序中执行此操作。我在想,因为可以

我有以下代码。 它允许使用Django中的RESTAPI上传图像。 然而,由于此类的性质,我无法以通常的方式获取用户(request.user)

view.py url.py
如果要将用户添加到
Photo
实例,请在PhotoSerializer(作为只读字段)中使用,或在视图的
执行创建

中使用,您不能。。。即使在没有HTTP请求的情况下,信号也可能触发,并且不知道是什么触发了模型上的保存。如果您希望能够对
用户
执行某些操作,那么您需要在视图方法/类中而不是在信号处理程序中执行此操作。我在想,因为可以检查权限。IsAuthenticated可能还可以检查请求的用户。在这种情况下,我必须使用此示例,但是我不理解如何使用该方法上载文件,因为与ModelViewSet类方法不同,api页面不提供浏览选项。(我已经查看了很多类似的问题,我仍然很难找到方法,经常建议使用curl,但它似乎不太管用)
权限。正在查看类中检查isAuthenticated
,该类可以访问请求。您的信号处理程序不会(也不应该)。应该可以将您的逻辑从处理程序移到视图代码本身。您的照片模型是否有一个外键指向上传它的用户?
class PhotoViewSet(viewsets.ModelViewSet, APIView):
    permission_classes = (permissions.IsAuthenticated,)

    queryset = Photo.objects.all()  
    serializer_class = PhotoSerializer

    @receiver(post_save, sender=Photo)
    def my_handler(sender, instance, **kwargs):
        print request.user.username #How to make this work?
router = routers.SimpleRouter()
router.register(r'avatar', PhotoViewSet, base_name='love_stackoverflow')