Django : отображение содержимого PDF или изображения на шаблоне
Я хочу отобразить файл pdf/изображения в шаблоне. Я загружаю содержимое файла из хранилища azure blob, но не знаю, как отобразить его в шаблоне без использования метода HttpResponse из Django. Вот мой код :
функция
def download_from_blob(file):
blob_client = create_blob_client(file)
if not blob_client.exists():
return
blob_content = blob_client.download_blob()
return blob_content
views.py
def displayFILE(request, file_id):
file = UploadFilesAAD.objects.get(pk=file_id)
filename = file.Filename
file_type, _ = mimetypes.guess_type(filename)
url = file.Url
blob_name = url.split("/")[-1]
blob_content = download_from_blob(blob_name)
if blob_content :
response = HttpResponse(blob_content.readall(), content_type='application/pdf')
response['Content-Disposition'] = 'inline;filename=some_file.pdf'
return response
Этот код работает, но только для pdf и занимает для него всю страницу. Я хотел бы взять это содержимое и вставить его в html тег без использования метода django. Потому что после я хочу настроить страницу так, чтобы содержимое отображалось на половине страницы.
Моя идея заключалась в том, чтобы закодировать содержимое в 64 бита и затем отобразить его в html-коде, но это не работает. Вот код :
def displayFILE(request, file_id):
context = initialize_context(request)
file = UploadFilesAAD.objects.get(pk=file_id)
filename = file.Filename
file_type, _ = mimetypes.guess_type(filename)
url = file.Url
blob_name = url.split("/")[-1]
blob_content = download_from_blob(blob_name)
encoded_string = base64.b64encode(blob_content.readall())
context["encoded_string"] = encoded_string
return render(request, 'archivage/displayPDF.html', context)
displayPDF.html
{% load static %}
<!-- <iframe src="data:application/pdf;base64,{{ encoded_string }}"></iframe> -->
<embed src="data:application/pdf;base64,{{ encoded_string }}">
Как мне это сделать?
Спасибо