【问题标题】:How to get filename of file uploaded to imagefield?如何获取上传到 imagefield 的文件的文件名?
【发布时间】:2017-06-08 17:57:03
【问题描述】:

我需要在模板中传递在实例图像字段中上传的文件的文件名。

我的班级:

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="">

但是dialog.avatar.filename在渲染后是空字符串。怎么了?对话是对话模型的一个实例。

【问题讨论】:

    标签: django python-3.x templates models imagefield


    【解决方案1】:

    实际上存储在数据库中的是文件名而不是数据。此处描述了如何访问它:

    https://docs.djangoproject.com/en/1.10/ref/models/fields/#filefield

    所有将存储在数据库中的都是文件的路径 (相对于 MEDIA_ROOT)。您很可能希望使用 Django 提供的便捷 url 属性。例如,如果您的 ImageField 被称为 mug_shot,你可以得到你的绝对路径 带有 {{ object.mug_shot.url }} 的模板中的图像。

    所以我们有

    <img src="{{ dialogue.avatar.url }}" alt="">
    

    【讨论】:

    • 很高兴能帮上忙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 2011-11-21
    • 2011-04-28
    • 2013-02-14
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多