Django Как отобразить либо изображение, либо pdf

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

Я видел довольно сложное решение на основе ajax. Есть ли лучший способ?

hello вы можете использовать python-magic в вашем представлении, чтобы получить тип файла

Далее вы можете использовать тип got для использования тега img или тега pdf в html

пример с изображением и видео:

class post(models.Model):
titre=models.CharField(unique=True,null=True,max_length=100)
description=models.TextField(null=True,blank=True,max_length=400)
T=models.CharField(default="image",blank=True,max_length=50)
image=models.FileField(null=True)
cat=models.ForeignKey(categorie,on_delete=models.CASCADE,null=True)
datepost=models.DateTimeField(auto_now_add=True,blank=True)
user=models.ForeignKey(myuser,on_delete=models.CASCADE,null=True)
vue=models.IntegerField(default=0,blank=True)
def __str__(self):
    return self.titre

def save(self, *args ,**kwargs):
    #cette partie permet de generer un identifiant unique
    f=self.image.read(1000)
    self.image.seek(0)
    mime=magic.from_buffer(f,mime=True)
    if "video" in mime :
        self.T="short"
    super(post,self).save(*args,**kwargs)

в моем шаблоне:

{%if mpost.T == "image" %}
    <img src="{{mpost.image.url}}" style="max-width:100% ;max-height: 100%;flex-shrink: 0;">
{%else%}
    <video loop autoplay="true" src="{{mpost.image.url}}" style="max-width:100% ;max-height: 100%;flex-shrink: 0;"></video>
 {%endif%}  
Вернуться на верх