Django proj生产模式下的文件访问

2024-10-01 13:32:21 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我的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] No such file or directory: 'transform.xsl'

Request Method: POST Request

URL: xx.xx.xx.xxx/mysite/add/ Django Version: 2.2.7 Exception

Type: FileNotFoundError Exception Value: [Errno 2] No such file or directory: 'transform.xsl' Exception

Location: /srv/www/htdocs/djangoProject/mysite/createDatabase.py in handleInputFiles, line 84 Python Executable: /usr/bin/python3 Python Version: 3.6.5

Apache2安装使用wsgi.py接口访问django应用程序

访问xsl文件的正确方法是什么


Tags: 文件项目djangopy服务器settingsexception模式
1条回答
网友
1楼 · 发布于 2024-10-01 13:32:21

您确定您的文件以*.xsl结尾吗? 可能是打字错误.xls

settings.py中,您有默认的base dir。这是你项目的基础。 如果将xls放入media/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

相关问题 更多 >