【问题标题】:Quick and dirty way to access files external to Django?访问 Django 外部文件的快速而肮脏的方法?
【发布时间】:2018-10-26 11:16:26
【问题描述】:

我正在为一个在自己的目录中创建一些文件的程序进行演示。这个演示将通过 VPN 向物理上很远的人展示,所以我做了一个简单的 django 项目,只是为了接收输入,调用一些脚本并显示输出 - 生成的文件。但是,我无权打开文件以显示它,因为它位于 django 项目之外的目录中(结果是权限被拒绝错误)。

我知道 Web 服务器访问其目录之外的文件不是好的做法,甚至是不安全的,但由于这只会在封闭的环境中运行很短的时间,是否有解决方法?

【问题讨论】:

    标签: python django permissions


    【解决方案1】:

    这样想 - 如果网络服务器可以生成文件,它也可以显示它们。

    至于您的答案 - 如果您知道文件的路径,请使用 python open 内置方法打开文件并将结果呈现给模板。

    data = open('file_path').read().decode('utf-8')
    render(request, template, context={data:data})
    

    【讨论】:

    • 我应该更具体一些,对不起。这是一个 .wav 文件,我试图用 audio 标签嵌入它。根据我对标签的理解,我必须将文件的位置传递给src...
    • 不,现在您询问的是有关提供文件的问题。如果你想让 django 服务它,它应该可以在静态目录中访问。因此,要么将文件位置的路径添加到设置中的 staticfiles-dirs - 就像这里的 docs.djangoproject.com/en/2.0/ref/settings/#staticfiles-dirs ,要么将文件的生成路径更改为应用程序中的静态目录。基本上之后你就可以提供静态文件了。
    猜你喜欢
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2013-06-09
    • 2010-10-08
    • 1970-01-01
    • 2010-09-08
    相关资源
    最近更新 更多