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 自动安装 Rising 杀毒软件
Apr 24 Python
浅要分析Python程序与C程序的结合使用
Apr 07 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
用Python写一个无界面的2048小游戏
May 24 Python
Python 中的with关键字使用详解
Sep 11 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
分享vim python缩进等一些配置
Jul 02 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
python之基数排序的实现
Jul 26 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 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类与对象中的private访问控制的疑问
2012/11/01 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
关于php开启错误提示的总结
2019/09/24 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
Javascript查看大图功能代码实现
2020/05/07 Javascript
Ubuntu下安装PyV8
2016/03/13 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
Python3多线程基础知识点
2019/02/19 Python
详解python的argpare和click模块小结
2019/03/31 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
django 实现简单的插入视频
2020/04/07 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
Ado与Ado.net的相同与不同
2014/12/08 面试题
大学生就业求职信
2014/06/12 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书