Я использую Python 3.6 и django 2.2 для разработки веб-сервера. Я хочу, чтобы на моей веб-странице отображалась ссылка для загрузки файла, созданного мной на основе данных, введенных пользователем.
В моем файле setting.py у меня есть:
MEDIA_ROOT = os.path.join.(BASE_DIR,'media')
MEDIA_URL='/media/'
В моем файле views.py есть
query.outputfile.name = os.path.join('submission',query_id,'output_file.txt')
, чтобы связать объект файлового поля с файлом, который я создал:
path/to/project/media/submission/[query_id]/output_file.txt
И когда я включаю
print(query.outputfile.url)
, я получил:
media/submission/[query_id]/output_file.txt
В моем шаблоне html у меня есть
<a href={{ query.outputfile.url }} download> Download output file here </a>
На веб-странице ссылка на файл указывает на
[local ip]/media/submission/[query_id]/output_file.txt
Но когда я нажимаю на ссылку chrome говорит «Failed - No file» и в строке cmd я получил
Not Found: /media/submission/[query_id]/output_file.txt
Я нашел похожие вопросы, такие как this , но не понимаю, что не так с моим кодом.
Мои вопросы:
- .url, кажется, относительно моего MEDIA_ ROOT, но почему он не может найти мой файл? Ошибка строки cmd указывает на абсолютный путь / media / ...? Я попытался создать этот путь и файл, но все равно получил ту же ошибку.
- Что мне нужно сделать, чтобы сгенерировать ссылку для скачивания?
Спасибо