Задача: загружаемые в приложение файлы хранить на сервере с виндой.
Моё решение: разворачивание фтп сервера на машине с виндой, с помощью расширения django-storages (чтобы не писать свой класс FTPStorage) привязать в моделях поля файлов к новому хранилищу.
Методы Model.filefield.save и Model.filefield.open работают так, как мне надо. Но в админке поднимает ошибку при попытке скачивания (что и требовалось ожидать, но я не пойму в каком месте мне нужно влезть в джангу, чтобы объяснить ему брать файл по ftp в память и уже отправлять юзеру по http).
Заранее говорю, касательно безопасности комментарии не интересуют, облачные сервисы тоже не рассматриваю.
Код:
# settings
DEFAULT_FILE_STORAGE = "storages.backends.ftp.FTPStorage"
FTP_STORAGE_LOCATION = f'ftp://{FTP_USER}:{FTP_PASSWORD}@{FTP_HOST}:21/'
# model
from storages.backends.ftp import FTPStorage
storage = FTPStorage()
class MyModel(Model):
f = FileField(storage=storage)
Ошибка:
“/home/../app/asda.xlsx” не существует 404
Как настроить админку так, чтобы можно было скачать файлы? Как работать с самим сайтом? Написать отдельные вьюхи для скачивания файлов? Уверен, что есть варианты лучше.