web-dev-qa-db-fra.com

Django: obtenir l'URL ImageField en vue

J'essaie d'obtenir le chemin absolu ImageField dans la vue Django afin que je puisse ouvrir l'image, y écrire quelque chose et la servir à l'utilisateur.

J'ai du mal à obtenir le chemin absolu de l'image qui est enregistrée dans le dossier multimédia.

item = get_object_or_404(Item, pk=pk)
absolute_url = settings.MEDIA_ROOT + str(item.image.path)

Je reçois une erreur, cet élément.image n'a pas de chemin (The 'banner' attribute has no file associated with it.). item.image est ImageField et j'aimerais savoir comment obtenir le chemin absolu de l'image enregistrée dans le champ image (dans Django view).

24
Byteme

Une fois configuré correctement, utilisez .url: item.image.url. Vérifiez les documents ici .

39
okm

Peut-être de cette façon?

@property
def get_absolute_image_url(self):
    return "{0}{1}".format(settings.MEDIA_URL, self.image.url)

voir Comment puis-je obtenir une liste des URL d'images absolues à partir d'un Django QuerySet?

6
Peter Rosemann

Je viens de comprendre quel était le problème ... le chemin absolu de l'image est enregistré dans une variable de fichier.

Exemple (en vue):

item = Item.objects.get(pk=1)
print item.file # prints out full path of image (saved in media folder)
2
Byteme