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算法学习之计数排序实例
Dec 18 Python
django创建自定义模板处理器的实例详解
Aug 14 Python
python方向键控制上下左右代码
Jan 20 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
python3实现随机数
Jun 25 Python
如何安装并使用conda指令管理python环境
Jul 10 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
Python发送邮件封装实现过程详解
May 09 Python
Python办公自动化之Excel(中)
May 24 Python
使用python创建股票的时间序列可视化分析
Mar 03 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
YII路径的用法总结
2014/07/09 PHP
浅析php工厂模式
2014/11/25 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
element中的$confirm的使用
2020/04/26 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
python画折线图的程序
2018/07/26 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
pandas-resample按时间聚合实例
2019/12/27 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
python TCP包注入方式
2020/05/05 Python
python如何安装下载后的模块
2020/07/03 Python
Python如何测试stdout输出
2020/08/10 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
有原因的手表:Flex Watches
2019/03/23 全球购物
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
道德模范先进事迹
2014/02/14 职场文书
党员党性分析材料
2014/02/17 职场文书
优秀广告词大全
2014/03/19 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
销售顾问工作计划书
2014/09/15 职场文书
五一劳动节慰问信
2015/02/14 职场文书
初中军训感言
2015/08/01 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
opencv检测动态物体的实现
2021/07/21 Python
Elasticsearch 数据类型及管理
2022/04/19 Python