2011-08-18 72 views
1

我有一个Django应用程序,用户可以下载分配给他们的文件。我如何确定只有分配了该文件的用户才能下载该文件。因为它在媒体目录中,任何人都可以在那里浏览,那么有没有办法让相关用户下载文件?Django,显示某些媒体目录登录用户

回答

3

一年前我做了同样的事情。 我只希望相关用户可以下载自己的照片:

# urls.py 
(r'^data/photos/(?P<path>.*)$','views.data_access'), 

我认为“data_access”给人的照片,或者403页

# view data_access(request, path) 
# [...code...] 
if user_can_download: 
     response = HttpResponse(mimetype="image/jpeg") 
     response['Content-Disposition'] = 'attachment; filename=%s' % unicode(photo.image.name) 
     response['X-Accel-Redirect'] = '/protected/'+ unicode(path) 
     return response 
else: 
    return HttpResponseForbidden() 
+0

OK等待,但我仍然可以只是眉头到/ media/etc/etc/photos /以及看照片,任何用户都可以看到它们。我得到这个错误? – Harry

+0

['return HttpResponseForbidden'](https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponseForbidden)比明确设置'403'更清晰。 –

+0

@哈里:不,我的项目中的数据是经典/媒体。 – nicolas