在Django模板中渲染空白ImageFields

时间:2018-02-15 15:07:29

标签: python html django django-templates

我正在尝试在我的模板中呈现此模型的实例:

class Candidate(models.Model):
    UserID = models.ForeignKey(User, on_delete=models.CASCADE)
    ElectionID = models.ForeignKey(Election, on_delete=models.CASCADE)
    Bio = models.CharField(max_length=500, blank=True)
    Poster = models.ImageField(upload_to="profilepics/", null=True, blank=True)

我在渲染Poster属性方面遇到了麻烦,正如您所见,该属性可以选择为空白。

当我尝试在模板中呈现以下html时:

<h1>{{candidate.UserID.first_name}} {{candidate.UserID.last_name}} ({{candidate.UserID.username}})</h1>
<h2>{{candidate.ElectionID}}</h2>
<img src="{{candidate.Poster.url}}" width=240><br>

如果Poster为空,则会收到错误。

  

ValueError:“Poster”属性没有与之关联的文件。

如何防止此错误?如果Poster为空,我想显示任何内容,如果不是,则显示图像。

1 个答案:

答案 0 :(得分:1)

使用if条件。

<h1>{{candidate.UserID.first_name}} {{candidate.UserID.last_name}} ({{candidate.UserID.username}})</h1>
<h2>{{candidate.ElectionID}}</h2>
{% if candidate.Poster %}
    <img src="{{candidate.Poster.url}}" width=240>
{% endif %}
<br>