我正在尝试在我的模板中呈现此模型的实例:
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
为空,我想显示任何内容,如果不是,则显示图像。
答案 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>