我想在由django支持的网站上实现私有下载区域。用户将必须以适当的权限登录才能获得一些静态文件。
您对编写此功能有何建议。有技巧或窍门吗?
提前致谢
更新:也许是由于我的英语不好或我对此体系结构缺乏了解(这就是我要问的原因),但是我的问题是:如何确保对静态文件(由常规Web服务器提供服务,而无需Django的访问)进行控制通过django认证。我将更仔细地阅读django文档,但我不记得该问题的现成解决方案。
Update2:我的主机提供商仅允许使用FastCgi。
因此,通过搜索,我找到了这个讨论主题。
您可能会对三件事感兴趣。
首先是mod_python方法, 然后是mod_wsgi方法
两者看起来都不太好。
更好的是X-Sendfile标头,它不是完全标准的,但至少在apache和lighttpd中有效。
从这里开始,我们有以下内容。
@login_required def serve_file(request, context): if <check if they have access to the file>: filename = "/var/www/myfile.xyz" response = HttpResponse(mimetype='application/force-download') response['Content-Disposition']='attachment;filename="%s"'%filename response["X-Sendfile"] = filename response['Content-length'] = os.stat("debug.py").st_size return response return <error state>
那几乎应该就是您想要的。只要确保您碰巧使用了X-Sendfile支持即可。