小编典典

如何使用django制作一个私人下载区?

python

我想在由django支持的网站上实现私有下载区域。用户将必须以适当的权限登录才能获得一些静态文件。

您对编写此功能有何建议。有技巧或窍门吗?

提前致谢

更新:也许是由于我的英语不好或我对此体系结构缺乏了解(这就是我要问的原因),但是我的问题是:如何确保对静态文件(由常规Web服务器提供服务,而无需Django的访问)进行控制通过django认证。我将更仔细地阅读django文档,但我不记得该问题的现成解决方案。

Update2:我的主机提供商仅允许使用FastCgi。


阅读 235

收藏
2021-01-20

共1个答案

小编典典

因此,通过搜索,我找到了这个讨论主题。

您可能会对三件事感兴趣。

首先是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支持即可。

2021-01-20