对于我的 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/
[错误 2] 没有这样的文件或目录:"transform.xsl">
请求方法:开机自检请求
网址: xx.xx.xx.xxx/mysite/add/姜戈 版本: 2.2.7 异常
类型:文件未发现错误异常值:[错误 2] 没有这样的文件或 目录:"转换.xsl"异常
位置:/srv/www/htdocs/djangoProject/mysite/createDatabase.py in handleInputFiles, line 84 Python 可执行文件:/usr/bin/python3 Python 版本: 3.6.5
django 应用程序由 Apache2 安装使用 wsgi.py 接口访问。
访问 xsl 文件的正确方法是什么?
您确定您的文件以*.xsl结尾吗? 也许是错别字.xls
在settings.py
中,您有默认的基本目录。这是项目的基础。 如果您将 xls 放在媒体/myxls 中.xls
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
在您的views.py
from myproject.settings import BASE_DIR
import os
with open(os.path.join(BASE_DIR,'media/myxls.xls') as file:
print(myfile.read())
如果您以这种方式访问文件,则无需使用绝对路径,并且非常灵活。
将文件放入静态文件夹时,是否运行了./manage.py collectstatic
?