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

发布于 2021-01-29 15:06:21

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

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

提前致谢

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

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

关注者
0
被浏览
67
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看