繁体   English   中英

在Django项目的生产模式下访问文件

[英]Access files in production-mode of django project

对于我的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'))

但是,这两种尝试都会产生此类错误消息:

FilemyFoundError在/ mysite / add /

[Errno 2]没有这样的文件或目录:'transform.xsl'

请求方法:POST请求

URL:xx.xx.xx.xxx/mysite/add/ Django版本:2.2.7例外

类型:FileNotFoundError异常值:[Errno 2]没有这样的文件或目录:'transform.xsl'异常

位置:handleInputFiles中的/srv/www/htdocs/djangoProject/mysite/createDatabase.py,第84行Python可执行文件:/ usr / bin / python3 Python版本:3.6.5

django应用程序可以通过使用wsgi.py接口的Apache2安装来访问。

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

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

settings.py您具有默认的基本目录。 这是您项目的基础。 如果将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM