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的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
Python判断是否json是否包含一个key的方法
Dec 31 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
python实现PID算法及测试的例子
Aug 08 Python
pytorch 图像中的数据预处理和批标准化实例
Jan 15 Python
pyqt5中动画的使用详解
Apr 01 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
Jun 14 Python
python输入中文的实例方法
Sep 14 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 Python
深入浅析Django MTV模式
Sep 04 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生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
vue-cli3+typescript初体验小结
2019/02/28 Javascript
详解vue路由
2020/08/05 Javascript
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
Python开发的实用计算器完整实例
2017/05/10 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
python实现事件驱动
2018/11/21 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
注塑工厂厂长岗位职责
2013/12/02 职场文书
车贷收入证明范本
2014/01/09 职场文书
实习鉴定评语
2014/01/19 职场文书
优秀志愿者事迹材料
2014/02/03 职场文书
小学少先队活动方案
2014/02/18 职场文书
生日祝酒词大全
2015/08/10 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
MYSQL 表的全面总结
2021/11/11 MySQL
警用民用对讲机找不同
2022/02/18 无线电
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL