Django1.9 加载通过ImageField上传的图片方法


Posted in Python onMay 25, 2018

这里假设你是通过models的ImageField上传图片,并期望在前台img标签中能显示。能否访问图片关键在于,是否能通过正确的路径访问。

在models.py中有image如下

image = models.ImageField(upload_to='images/%Y/%m', verbose_name='文件缩略图')

在显示页面中如show.html中使用img标签显示

<img class="center-block thumbnail" src="{{result.object.image.url }}" alt="" />

不过这里{{result.object.image.url}}只是读取出了上面模型upload_to下面的路径,并不能真正显示出来。要在模板中显示,还需要在urls.py和settings.py配置

下一步,在你的urls.py中配置如下:

from django.conf.urls import include, url
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
  '''你的其他url配置'''
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

setttings.py中配置 MEDIA_URL 和 MEDIA_ROOT,这里定义了media相关配置,也就是定义了模型中ImageField里的参数upload_to所在目录

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

到此,我们能够正确访问通过ImageFields上传的图片,下面是官方文档上面的一些说明

具体的相关文档

在模型中调用FileField 或 ImageField (见下方) 需如下几步:

在你的settings文件中, 你必须要定义 MEDIA_ROOT 作为Django存储上传文件的路径(从性能上考虑,这些文件不能存在数据库中。) 定义一个 MEDIA_URL 作为基础的URL或者目录。确保这个目录可以被web server使用的账户写入。

在模型中添加FileField 或 ImageField 字段, 定义 upload_to参数,内容是 MEDIA_ROOT 的子目录,用来存放上传的文件。

数据库中存放的仅是这个文件的路径 (相对于MEDIA_ROOT). 你很可能会想用由Django提供的便利的url 属性。比如说, 如果你的ImageField 命名为 mug_shot, 你可以在template中用 {{ object.mug_shot.url }}获得你照片的绝对路径。

例如,如果你的 MEDIA_ROOT设定为 ‘/home/media',并且 upload_to设定为 photos/%Y/%m/%d。 upload_to的'%Y/%m/%d‘被strftime()所格式化;'%Y' 将会被格式化为一个四位数的年份, ‘%m' 被格式化为一个两位数的月份'%d'是两位数日份。如果你在Jan.15.2007上传了一个文件,它将被保存在/home/media/photos/2007/01/15目录下.

以上这篇Django1.9 加载通过ImageField上传的图片方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中关键字is与==的区别简述
Jul 31 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
独特的python循环语句
Nov 20 Python
Python 对象中的数据类型
May 13 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
python requests模块的使用示例
Apr 07 Python
python中字符串String及其常见操作指南(方法、函数)
Apr 06 Python
python matplotlib 在指定的两个点之间连线方法
May 25 #Python
基于python OpenCV实现动态人脸检测
May 25 #Python
使用matplotlib画散点图的方法
May 25 #Python
python调用OpenCV实现人脸识别功能
May 25 #Python
matplotlib subplots 设置总图的标题方法
May 25 #Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 #Python
Python unittest模块用法实例分析
May 25 #Python
You might like
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
php精度计算的问题解析
2019/06/21 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
python机器学习之神经网络(三)
2017/12/20 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
物流专业大学应届生求职信
2013/11/03 职场文书
员工培训邀请函
2014/02/02 职场文书
人力资源主管职责范本
2014/03/05 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
JavaScript 定时器详情
2021/11/11 Javascript