#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 и проверьте это. Не уверен, нужно ли мне делать что-то особенное.
Если бы кто-нибудь мог помочь мне разобраться в этом, я был бы признателен.