Django模板image.path.url不起作用

时间:2018-04-13 04:33:25

标签: python django django-templates

我有一个名为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 %} 等于空字符串。

1 个答案:

答案 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" />