в моем приложении Django я пытаюсь открыть и показать файлы pdf, которые не были загружены в модель, но не могу найти подходящий путь.
У меня есть группа счетов-фактур в формате PDF, которые явручную скопировано в media/my_folder
(я использую Dropbox в качестве медиа-хоста, чтобы сделать это).
Затем я хочу показать каждый счет-фактуру при запросе.
Параметр объекта файла
После изучения нескольких постов, я думаю, что способ сделать это - создать объект файла dinamycaly.
invoice_path = "my_folder/" + invoice_number + ".pdf"
f = open(invoice_path, 'w')
myfile = File(f)
Тогда я понимаю, что в шаблоне я могу получить доступ кфайл в том виде, в котором он был загружен в модель.
<p><a href="{{ myfile.url }}" target="_blank">Ver factura AFIP</a></p>7
Я получаю ошибку FileNotFoundError, я полагаю, что я неправильно устанавливаю путь к файлам мультимедиа.
Тип исключения: FileNotFoundError at / catalog / perfilfactura / FA B 0003-00000220 Значение исключения: [Errno 2] Нет такого файла или каталога: 'media / Facturas_Electronicas / FA-B-0003-00000220.pdf '
Это происходит при попытке open
файла.Путь, который я установил, противоположен MEDIA_ROOT, просто добавьте подпапку «my_folder», а затем имя файла pdf.
Путь в параметре шаблона
Я также попытался установить путь непосредственно в шаблоне, как в:
<p><a href="media/{{ archivo_factura }}.pdf" download>Ver factura AFIP</a></p>
<p><a href="{{ MEDIA_URL }}Facturas_Electronicas/{{ archivo_factura }}.pdf" download>Ver factura AFIP</a></p>
В обоих случаях я получаю загруженные файлы в формате PDF.
Мои настройки
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
И мои настройки Dropbox:
DEFAULT_FILE_STORAGE = 'storages.backends.dropbox.DropBoxStorage'
DROPBOX_OAUTH2_TOKEN = 'my_token'
DROPBOX_ROOT_PATH = '/Kinemed APP/'
Спасибо!