Django TemplateResponse путается с URL-адресом файла

#django

Вопрос:

Позвольте мне начать с того, что мои URL-адреса файлов работают так, как задумано. Когда я отрисовываю свой шаблон, я могу нажать на ссылку и загрузить правильный PDF-файл.

С учетом сказанного я экспериментировал с попытками динамического обновления или загрузки строк таблицы, чтобы улучшить пользовательский интерфейс. Для этого я использовал HTMX и обычный старый JS.

Я также создал функцию просмотра, которая позволяет мне отображать фрагменты HTML, которые затем вставляются в DOM. Эта функция выглядит следующим образом:

 @login_required def api_list_invoices(request):  if (request.method == 'GET'):  search_fields = ['pk','invoiceDate', 'vendorName', 'invoiceTotal', 'pdf']  invoices = request.user.location.invoices.values(*search_fields).order_by('-invoiceDate')   .annotate(item_count=Count('items'))    return TemplateResponse(request, 'invoice/invoice_table.html', {'invoices': invoices})  

Это работает нормально, за исключением одной вещи. Это полностью портит сгенерированные ссылки для pdf . invoice.pdf.url Получение ничего не создает в выводимом HTML-файле и invoice.pdf приведет к созданию неверной ссылки. Если быть точным, это будет выглядеть /invoice/api/pdfs/filename.pdf примерно так, чтобы быть правильным, ссылка должна быть чем-то вроде /media/pdfs/filename.pdf . Интересно, что я НЕ замечаю этого побочного эффекта при создании URL-адреса аватара, поэтому я понятия не имею, почему это проблема для поля файла. Любое понимание будет оценено по достоинству.

Кроме того, если кто-нибудь, возможно, мог бы дать мне несколько советов по защите URL-адреса СМИ в целом, я был бы признателен за это. Прямо сейчас для этого требуется логин, но я хочу убедиться, что пользователи могут просматривать только принадлежащие им PDF-файлы, но я не на 100% уверен в том, как настроить URL-адрес МУЛЬТИМЕДИА в URLS.py и проверьте это. Не уверен, нужно ли мне делать что-то особенное.

Если бы кто-нибудь мог помочь мне разобраться в этом, я был бы признателен.