我需要在模板中过去在实例imagefield中上传的文件的文件名。
我的课程:
def conference_directory_path(instance, filename):
return 'dialogues/conferences/conference_{0}/avatar/{1}'.format(instance.id, filename)
class Dialogue(models.Model):
...
avatar = models.ImageField(upload_to=conference_directory_path, blank=True)
...
模板:
<img src="/static/dialogues/conferences/conference_{{ dialogue.id }}/avatar/{{ dialogue.avatar.filename }}" alt="">
但是render.avatar.filename在渲染后是空字符串。怎么了?对话是对话模型的一个实例。
答案 0 :(得分:0)
数据库中存储的内容实际上是文件名而不是数据。如何访问它在这里描述:
https://docs.djangoproject.com/en/1.10/ref/models/fields/#filefield
将存储在数据库中的所有内容都是文件的路径 (相对于MEDIA_ROOT)。你很可能想要使用 Django提供的便捷网址属性。例如,如果你的 ImageField被称为mug_shot,你可以获得你的绝对路径 使用{{object.mug_shot.url}}的模板中的图像。
所以我们有
<img src="{{ dialogue.avatar.url }}" alt="">