【发布时间】:2019-11-26 14:06:15
【问题描述】:
对于我的 Django 项目,我必须打开一个永久位于服务器上的 xsl 文件,以便对用户可以上传的其他文件执行一些操作。在开发模式下,我只是在 python 脚本中使用了一个相对路径来指向该 xsl 文件,它工作正常:
xslFile = open('./transform.xsl')
但是,由于我现在正处于将项目部署到服务器的阶段,我无法更改那行代码,以便在生产模式下仍然可以找到该文件。 我已经尝试过设置绝对路径,例如
xslFile = open('/srv/www/htdocs/djangoProject/mysite/transform.xsl')
这引发了错误。此外,我尝试将文件移动到我在 settings.py 中声明的静态目录:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
然后尝试像这样打开文件:
from django.conf import settings
xslFile = open(os.path.join(settings.STATIC_ROOT, 'transform.xsl'))
但是,这两种尝试都会产生此类错误消息:
FileNotFoundError at /mysite/add/
[Errno 2] 没有这样的文件或目录:'transform.xsl'
请求方法:POST 请求
网址:xx.xx.xx.xxx/mysite/add/ Django 版本:2.2.7 异常
类型:FileNotFoundError 异常值:[Errno 2] 没有这样的文件或 目录:“transform.xsl”异常
位置:/srv/www/htdocs/djangoProject/mysite/createDatabase.py 在 handleInputFiles,第 84 行 Python 可执行文件:/usr/bin/python3 Python 版本:3.6.5
使用 wsgi.py 接口通过 Apache2 安装访问 django 应用程序。
访问 xsl 文件的正确方法是什么?
【问题讨论】:
-
也许你有错字你的文件是 xls,而不是 xsl
-
危险 - 此处的友好警告:我不知道该文件中的内容,但请记住(一般而言)/static 中的所有内容都被假定为安全地向公众展示。换句话说,如果我去 http://diamon.com/static/transform.xsl 你可以看到那个文件吗?将文件放在您的 /static/ 中,以便您的 Web 进程可以找到它们是一种误解,并且不是正确的方法。