FileNotFoundError для папки мультимедиа после развертывания приложения Django на Apache - PullRequest
0 голосов
/ 03 мая 2019

У меня есть приложение Django, которое я только что добавил в уже развернутую сеть Django на Apache.Поскольку он управляется Apache, путь к папке с мультимедиа кажется другим.

Мое приложение позволяет пользователю загружать файл Excel, который затем меняет числа, и сохранять как файл CSV.

(толькопоказаны соответствующие папки / фрагменты кода) Текущий каталог

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)

Часть, вызывающая проблемув файле convertts / 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»?Или есть другой способ позвонить в загруженную книгу?

Буду признателен за любую помощь / комментарий.Пожалуйста, прокомментируйте, если необходима дополнительная информация.

1 Ответ

0 голосов
/ 03 мая 2019

Я предполагаю, что вы должны использовать переменную MEDIA_ROOT, потому что она указывает на загруженные файлы. Таким образом, вы бы

def convertExcel(name):
    from django.conf import settings
    path = os.path.join(settings.MEDIA_ROOT, 'excels')
    key = os.path.join(path, name)
    wb = load_workbook(key)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...