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列表与元组详解实例
Nov 01 Python
Python之eval()函数危险性浅析
Jul 03 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
python提取图像的名字*.jpg到txt文本的方法
May 10 Python
详解python3中zipfile模块用法
Jun 18 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
python交互模式下输入换行/输入多行命令的方法
Jul 02 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
python 镜像环境搭建总结
Sep 23 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
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
php实现微信发红包功能
2018/07/13 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
JS操作JSON要领详细总结
2013/08/25 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
初学node.js中实现删除用户路由
2019/05/27 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
Python中splitlines()方法的使用简介
2015/05/20 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
基于python绘制科赫雪花
2018/06/22 Python
python3.7.0的安装步骤
2018/08/27 Python
Python的几种主动结束程序方式
2019/11/22 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
企划专员岗位职责
2013/12/09 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
工作年限证明范本
2015/06/15 职场文书
军训结束新闻稿
2015/07/17 职场文书
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技