我知道通过视图和网址调度直接从django直接提供文件和图片并不是一个好方法,但如果这些文件和图片是通过服务器(Apache)提供的,那么全世界都可以看到它们。如果某些文件和图片对用户是私有的,并且只有连接的用户可以看到这些文件或图片,该怎么办?在这种情况下,我需要由django本身服务吗?
答案 0 :(得分:0)
要提供私人文档,您应该使用进行安全检查的Python视图。
这是example。
答案 1 :(得分:0)
如果您将Apache与mod_wsgi一起使用,那么您可以使用mod_xsendfile
你基本上是想通过Django运行一些资源的授权,把一个标题传回给Apache说'嘿伙计,减轻。这个用户可以访问它'然后Apache将处理返回资源。
粗略的步骤(如同粗略,您需要使用我提供的链接作为起点进行更多的研究)
Apache需要知道哪些资源是公开的,哪些资源不是。在媒体下为这两种类型创建子目录(为什么不去疯狂并称之为/ media / public /和/ media / private /)
为公共目录设置别名,为受保护的目录设置WSGIScriptAlias,受保护的别名将指向您的主站点处理程序(可能是django.wsgi)
向vhost添加设置:
XSendFile On
XSendFileAllowAbove On
将urlconf添加到处理/ media / protected / {whatever}的Django应用程序中,并通过auth Django app auth逻辑路由它。一个例子是here