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中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
详解Python中的文件操作
Aug 28 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
基于Python函数和变量名解析
Jul 19 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
Python List列表对象内置方法实例详解
Oct 22 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
使用python的pyplot绘制函数实例
Feb 13 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
python中的时区问题
Jan 14 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面向对象学习笔记之一 基础概念
2012/10/06 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
javascript document.referrer 用法
2009/04/30 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Tornado 多进程实现分析详解
2018/01/12 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
python根据时间获取周数代码实例
2019/09/30 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
Python实现代码块儿折叠
2020/04/15 Python
Python二元算术运算常用方法解析
2020/09/15 Python
python实现磁盘日志清理的示例
2020/11/05 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
小学新学期教师寄语
2014/01/18 职场文书
冰淇淋开店创业计划书
2014/02/01 职场文书
法院信息化建设方案
2014/05/21 职场文书
项目经理任命书内容
2014/06/06 职场文书
横幅标语大全
2014/06/17 职场文书
休假证明书
2015/06/24 职场文书
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL
nginx设置资源请求目录的方式详解
2022/05/30 Servers
Python软件包安装的三种常见方法
2022/07/07 Python