Comment obtenir une URL ImageField dans un modèle?
J'ai le modèle suivant dans mon Django app:
class Image(models.Model):
image = models.ImageField(
upload_to='images/',
height_field='height',
width_field='width'
)
credit = models.CharField(max_length=50, blank=True)
caption = models.TextField(blank=True)
article = models.ForeignKey(Article)
width = models.PositiveIntegerField(
blank = True, null = True,
editable = False,
default = 0
)
height = models.PositiveIntegerField(
blank = True, null = True,
editable = False,
default = 0
)
J'ai mis le MEDIA_ROOT à un répertoire appelé /hmedia/à l'intérieur de mon web Apache racine, et j'ai mis MEDIA_URL à 'http://localhost/hmedia/'
. Cela semble avoir fonctionné, j'ai téléchargé un couple d'images, à travers le site d'administration de Django, et je peux voir ces images via http://localhost/hmedia/images/[filename]
. Et le site d'administration de Django fait montre-moi le nom de fichier, et les liens vers les URL de chaque image, et les liens fonctionnent.
Mon problème est que je ne peux pas savoir comment faire pour obtenir l'Url ou noms de fichier de ces images dans mon template:
<ul>
{% for image in article.image_set.all %}
<li>Caption: "{{image.caption}}", Credit: "{{image.credit}}", URL: "{{image.url}}"</li>
{% endfor %}
</ul>
Le modèle ci-dessus les résultats de cette sortie:
<ul>
<li>Caption: "here's an image caption", Credit: "some photographer", URL: ""</li>
<li>Caption: "Another caption here", Credit: "Another photographer", URL: ""</li>
</ul>
En d'autres termes, il génère correctement la légende et crédit propriétés de chaque image, mais il ne sort rien de {{image.url}}.
Comment puis-je obtenir l'URL de l'image dans mon template? Comment le Django admin modèle d'interface? (J'ai ancrée autour dans l'admin répertoire de modèles, mais ne peut pas trouver ce que je cherche.)
source d'informationauteur callum
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin
{{ image.image.url }}
&{{ image.image.path }}
tandis que{{ image }}
- juste une Image de l'objetModifier votre code:
Modifier {{ image.url }} à {{ image.image }} parce que".image' contient l'emplacement de l'image. La raison pour laquelle vous n'obtenez pas toute la valeur de".url', c'est que vous n'avez pas un champ url dans votre classe à l'Image de vos modèles.
Créer un dossier "statiques", vous êtes django projet et ajoutez ce que vous avez des paramètres de fichier de
Si vous n'avez pas cette ligne dans vous êtes fichier de paramètres aussi ajouter
Maintenant dans le modèle, vous pouvez utiliser