【发布时间】:2019-09-21 10:53:48
【问题描述】:
我有一个 Django 应用程序,我刚刚添加到 Apache 上已经部署的 Django web 中。 因为是Apache跑的,所以media文件夹的路径好像不一样。
我的应用程序允许用户上传一个 excel 文件,然后更改数字并保存为 csv 文件。
(仅显示相关文件夹/代码 sn-ps) 当前目录
converts\
_init_.py
apps.py
forms.py
models.py
converter.py
urls.py
views.py
main\
settings.py
urls.py
wsgi.py
meida\
excels\
example.xlsx
csvs\
example.csv
static\
manage.py
settings.py
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
main\urls.py
urlpatterns = [
path('', RedirectView.as_view(url='/converts/')),
path('converts/', include('converts.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
导致问题的部分在converts/converter.py中如下:
def convertExcel(name):
path = 'media/excels/'
key = path + name
wb = load_workbook(key)
最初在开发中,视图中的一个函数调用 convertExcel(example.xlsx),工作簿通过 media/excels/example.xlsx 找到正确的文件以处理加载的工作簿。但在生产服务器中,它给出了
FileNotFoundError: [Errno 2] No such file or directory: 'media/excels/example.xlsx'
我的问题是: 我是否必须从 apache2.conf 所在的位置回溯才能找到路径?或者有没有办法设置我的 django 项目的路径,这样我就可以在我的 convertExcel() 中将路径设置为“media/excels”?或者有没有其他方法可以调用上传的工作簿?
任何形式的帮助/评论将不胜感激。 如果需要更多信息,请发表评论。
【问题讨论】: