我有一个名为ImageField
的{{1}}模型,但是当我使用photo
时,html模板会获得一个空字符串。
这是模型:
photo.path.url
此函数返回我发送给模板的上下文:
class Photograph(models.Model):
owner = models.ForeignKey(User, on_delete=models.PROTECT, related_name='photos_of_user')
photo = models.ImageField()
album = models.ForeignKey('Album', on_delete=models.CASCADE, related_name='photos_of_album')
description = models.CharField(max_length=256)
def __str__(self):
return self.description
这是html模板:
def populate_with_album_content(self, album_pk):
album = Album.objects.get(id=album_pk)
photos = album.photos_of_album.all()
return { 'album': album, 'photos': photos }
我知道网址配置得很好,因为我可以在管理页面中看到图片,但是,当我查看结果页面源时,我可以看到{% for photo in photos %}
<div class="col-md-55">
<div class="thumbnail">
<div class="image view view-first">
<img style="width: 100%; display: block;" src="{{photo.photo.path.url}}" alt="image" />
<div class="mask">
<p>Your Text</p>
<div class="tools tools-bottom">
<a href="#"><i class="fa fa-link"></i></a>
<a href="#"><i class="fa fa-pencil"></i></a>
<a href="#"><i class="fa fa-times"></i></a>
</div>
</div>
</div>
<div class="caption">
<p>{{ photo.description }}</p>
</div>
</div>
</div>
{% endfor %}
等于空字符串。
答案 0 :(得分:0)
photo.photo.path
将返回服务器上的文件位置。 photo.path
没有属性url
,因此photo.photo.path.url
会在模板中返回空字符串。要获取文件网址,您应该使用photo.photo.url
direclty:
<img style="width: 100%; display: block;" src="{{photo.photo.url}}" alt="image" />