Python 从decorator django引发的权限被拒绝

Python 从decorator django引发的权限被拒绝,python,django,python-decorators,Python,Django,Python Decorators,我有一个图像模型,其中有一个来自django user的用户字段foreignkey class Image(models.Model): image = models.ImageField() user = models.ForeignKey(User) #more specific model fields 我希望媒体文件只提供给登录并上传媒体的用户。因此,我在apache中使用了X-SendFile头,使用以下视图 @owns_media def media_xs

我有一个图像模型,其中有一个来自django user的用户字段foreignkey

class Image(models.Model):
    image = models.ImageField()
    user = models.ForeignKey(User)
    #more specific model fields
我希望媒体文件只提供给登录并上传媒体的用户。因此,我在apache中使用了X-SendFile头,使用以下视图

@owns_media
def media_xsendfile(request, path):
    print "inside media_xsendfile view"
    print os.path.join(settings.MEDIA_ROOT,path)
    response = HttpResponse()
    response['Content-Type']=''
    response['X-Sendfile']= smart_str(os.path.join(settings.MEDIA_ROOT, path))
    return response
owns_media是一个装饰程序,用于检查登录的用户是否是上载图片的用户,并允许视图运行或引发PermissionDenied异常。这是装修工

def owns_media(view):
    """Decorator to check if users has permission to access media"""
    def wrapper(request, *args, **kw):
        path = kw['path']
        user = request.user
        image = Image.objects.get(image=path)
        image_user = image.user
        if user==image_user:
            return view(request, *args, **kw)
        else:
            raise PermissionDenied
    return wrapper

但这行不通。我登录到一个获得图片的用户,然后注销并尝试访问它,它确实提供了图片,但它不应该。我做错什么了吗?

为什么不试着打印
image\u user
user
的值呢?我总是忘记我需要重新启动apache…:(…一旦重新启动,就可以像charmIf一样工作。如果您正在进行开发,为什么不使用Django开发服务器?当您更改代码时,它会自动为您重新启动。是的,但是我正在准备设置它,所以在我的apache上设置它,然后我将部署它。