4 votes

Comment télécharger un fichier svg dans une application django ?

J'ai essayé de télécharger un .svg par le site d'administration vers SQLite (la base de données par défaut de django) et j'ai obtenu l'erreur suivante :

Upload a valid image. The file you uploaded was either not an image or a corrupted image.

Je peux télécharger des fichiers .jpg et cela fonctionne correctement.

class News(models.Model):
    news_id         = models.AutoField(primary_key=True, editable=False)
    news_title      = models.CharField(max_length=150)
    news_date       = models.DateTimeField(auto_now_add=True, editable=False)
    news_body       = models.TextField(max_length=1500)
    news_img        = models.ImageField(upload_to="pictures/%Y/%m/")
    news_author     = models.ManyToManyField(Author)

    class Meta:
        ordering: ['news_id']

    def __str__(self):
        return '%s %s %s'%(self.news_id, self.news_title, self.news_date)

7voto

Vous devriez changer votre ImageField de Django en FileField et ajouter l'extension .svg aux validateurs de champs.

Validateur d'extension de fichier

Le champ du fichier modèle qui en résulte ressemble à ceci :

from django.core.validators import FileExtensionValidator

news_img = models.FileField(upload_to="pictures/%Y/%m/", validators=[FileExtensionValidator(['pdf', 'doc', 'svg'])])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X