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 }}">

Как мне это сделать?

Спасибо

Вернуться на верх