Чтобы разрешить загрузку файлов, вам нужно создать отдельное представление с FileResponse в качестве ответа.Это представление будет принимать какой-то уникальный аргумент (я предполагаю, что это будет относительный путь к файлу) с URL-адресом, предоставленным в HTML-шаблоне.В этом представлении FileResponse откроет ваш файл по указанному пути, а затем вернет ответ с вашим файлом.Я думаю, вы должны сделать это так:
Views.py:
def download_file(request, relative_path): # this is a view with file response
media_root = settings.MEDIA_ROOT
return FileResponse(open(f"{media_root}\{relative_path}", "rb"), as_attachment=True, filename="some_name.smth")
шаблон:
<a href = '{% url "download" relative_path=value.thesis.relative_path %}'> Thesis </a>
*static files*
<a href='/uploads/report.pdf'> Front Page</a>
urls.py:
urlpatterns = [
path("download-file/<slug:relative_path>/", views.download_file, name="download")]
Вам нужно будет объединиться с PATH, чтобы заставить его работать.