Django中如何通过唯一标题查询media目录下对应的上传图片
Django图片查询实现方案
具体查询方法
你可以通过Django ORM先查询到对应Post实例,再通过ImageField内置的属性直接获取图片的存储路径,步骤如下:
- 用唯一的
title字段查询对应的Post对象 - 通过
cover字段的path属性获取图片在服务器media目录下的绝对物理路径;如果需要前端可访问的URL,可使用url属性
示例代码如下:
from .models import Post # 替换为你已知的唯一title值 target_title = "你的图片标题" try: # 因为title唯一,使用get方法直接查询单条记录 post = Post.objects.get(title=target_title) # 获取media文件夹下的物理路径,直接对应本地存储的图片文件 img_file_path = post.cover.path # 获取可供web访问的相对/绝对URL img_access_url = post.cover.url except Post.DoesNotExist: # 处理无对应记录的情况 pass
拿到img_file_path之后即可直接定位到media目录下的目标图片,可直接通过Python文件操作模块对图片进行读写。
官方文档相关说明
ImageField继承自FileField,上述用到的path、url属性均是FileField内置的标准属性,Django官方文档的「模型字段参考」、「文件上传管理」章节均有对该部分内容的明确说明:
path属性会自动拼接你在settings中配置的MEDIA_ROOT、字段定义的upload_to参数、上传文件名,返回完整的本地物理路径url属性会自动拼接MEDIA_URL、upload_to参数、上传文件名,返回可直接用于web访问的地址
注意事项
- 确保你的项目
settings.py中已经正确配置了MEDIA_ROOT和MEDIA_URL,否则路径和URL返回结果会不符合预期 - 如果
title字段没有配置唯一约束,建议使用filter方法替代get,避免查询到多条记录时报错
内容的提问来源于stack exchange,提问作者Ethan Chan
相关产品推荐
相关产品推荐

