将现有图像文件与 Django 模型相关联
Posted
技术标签:
【中文标题】将现有图像文件与 Django 模型相关联【英文标题】:Associate Existing Image File with Django Model 【发布时间】:2015-02-16 12:03:26 【问题描述】:我正在用 Django 创建一个基本的博客。我的一门课是给作者的。每个都包含姓名、职位、传记等,我试图将现有图像与每个作者相关联,以用作头像。
FileField 和 ImageField 不是我想要使用的,因为我已经在其他地方静态存储了图像 - 我只想在 Django 管理员中手动将每个图像的路径指定为 URL(CharField/TextField 等)并拥有该图像例如,当我在模板中调用 author.photo 时提供。我也不一定想从类模型中获取图像路径,因为现有图像的结构和路径可能会发生变化。有什么想法吗?
【问题讨论】:
【参考方案1】:你必须将它保存在某个地方才能映射用户和图像....
所以我可以想到 2 个解决方案 -
有一个存储路径的字段。然后你可以通过模板访问它,像这样 - <img src="author.photo_path">
如果您说路径可能会改变,您可以为每个用户设置一个用户 ID,并使用该 ID 存储他的照片。然后你可以简单地做<img src="/path/author.id_picture.gif">
使用第二种解决方案,您还可以在代码中将路径作为变量,然后将其传递给模板,并像这样访问图片 -
<img src="/path/author.id_picture.gif">
,它不会强制您使用硬编码路径,并且一旦路径更改,您只需更改一次,而不是在所有模型实例/模板文件中
【讨论】:
我喜欢 Thomas 的第二个解决方案。不过你可以更进一步。您可以为作者图像创建一个 FileField,然后从模板中执行类似% if not author.image %<img src="/path/author.id_picture.gif">% else %<img src=" author.image ">% endif %
的操作。这样,您就可以从管理员或您的表单或其他任何地方上传新的或未来的图像。以上是关于将现有图像文件与 Django 模型相关联的主要内容,如果未能解决你的问题,请参考以下文章
将我的 QT 应用程序与 Inno Setup 中的视频/图像文件相关联