Django : Медиафайл не найден при удалении, несмотря на то, что он правильно записан при создании (PROD)

Я долгое время тщетно искал истоки этого вопроса.

Все работает хорошо на разработке: загрузка csv файла + удаление, но на производстве, файл хорошо загружается при сохранении моей модели, но он не найден, когда я хочу удалить его.

views.py (имя_файла = sources/newone/egr-2022-light_copie.csv)

os.remove(f"media/{str(flow.fl_file_name)}")

settings.py. (файл пользовательских настроек для prod)

BASE_DIR = Path(__file__).resolve().parent.parent
[...]
MEDIA_ROOT = '/home/django/httpdocs/gsm2/media'
MEDIA_URL = '/media/'

apache conf (+ssl)

[...] 
Alias /static /home/django/httpdocs/gsm2/static
<Directory /home/django/httpdocs/gsm2/static>
        Require all granted
</Directory>

Alias /media /home/django/httpdocs/gsm2/media
<Directory /home/django/httpdocs/gsm2/media>
        Require all granted
</Directory>

<Directory /home/django/httpdocs/gsm2/gsm2>
[...]

Я пытался :

  • измените путь, используемый в remove(), удалив media/... безуспешно.
  • изменить путь, используемый в remove(), добавив gsm2/ перед media/ ... бесполезно.
  • заменить путь к медиафайлу settings.py на MEDIA_ROOT = os.path.join(BASE_DIR, 'media')... не лучше
  • .
  • Изменил права на папку на 777 и право собственности на 'django' ... тщетно

Есть идеи о возможном происхождении моих болей?

Найдено обходное решение с помощью решения @Naushad

Заменен :

os.remove(f"media/{str(flow.fl_file_name)}")

с :

file = os.path.join(os.path.dirname(os.path.dirname(__file__)), 
   f"media/{str(flow.fl_file_name)}")
os.remove(file)

Все еще нужно проанализировать это решение для хорошего понимания.

Вернуться на верх