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查询mysql中文乱码问题
Nov 09 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
python通过openpyxl生成Excel文件的方法
May 12 Python
python如何实现内容写在图片上
Mar 23 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
解决python replace函数替换无效问题
Jan 18 Python
基于Python中random.sample()的替代方案
May 23 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
python实现跨年表白神器--你值得拥有
Jan 04 Python
PyQt5 显示超清高分辨率图片的方法
Apr 11 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单例模式应用详解
2013/06/03 PHP
php动态生成函数示例
2014/03/21 PHP
PHP实现带进度条的Ajax文件上传功能示例
2019/07/02 PHP
面向对象的javascript(笔记)
2009/10/06 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
js 图片懒加载的实现
2020/10/21 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
大学生旅游业创业计划书
2014/01/29 职场文书
消防先进事迹材料
2014/02/10 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
荒岛余生观后感
2015/06/09 职场文书
举起手来观后感
2015/06/09 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS