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中的fileinput模块的简单实用示例
Jul 09 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
Jan 18 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
Django自定义manage命令实例代码
Feb 11 Python
python 生成图形验证码的方法示例
Nov 11 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
Django实现分页显示效果
Oct 31 Python
Python jieba库用法及实例解析
Nov 04 Python
Python数据可视化:泊松分布详解
Dec 07 Python
Python计算IV值的示例讲解
Feb 28 Python
怎么快速自学python
Jun 22 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 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正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
js实现简单的验证码
2015/12/25 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
介绍Python中内置的itertools模块
2015/04/29 Python
python实现简单购物商城
2016/05/21 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
物理研修随笔感言
2014/02/14 职场文书
售后服务经理岗位职责范本
2014/02/22 职场文书
《钱学森》听课反思
2014/03/01 职场文书
求职意向书
2014/04/01 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
python实现局部图像放大
2021/11/17 Python