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上基于Markov链生成伪随机文本的教程
Apr 17 Python
Django中使用locals()函数的技巧
Jul 16 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
python实现稀疏矩阵示例代码
Jun 09 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
python使用folium库绘制地图点击框
Sep 21 Python
python实现批量注册网站用户的示例
Feb 22 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
python创建学生管理系统
Nov 22 Python
Python读取表格类型文件代码实例
Feb 17 Python
python如何导出微信公众号文章方法详解
Aug 31 Python
用python-webdriver实现自动填表的示例代码
Jan 13 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
基于jQuery的动态表格插件
2011/03/28 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
js实现转动骰子模型
2019/10/24 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
Django 外键的使用方法详解
2019/07/19 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
解决django FileFIELD的编码问题
2020/03/30 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
应届生妇产科护士求职信
2013/10/27 职场文书
人事任命书范文
2014/06/04 职场文书
2014年消防工作总结
2014/11/21 职场文书
见义勇为事迹材料
2014/12/24 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
给病人的慰问信
2015/03/23 职场文书
实验心得体会范文
2016/01/25 职场文书
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
Python面试不修改数组找出重复的数字
2022/05/20 Python
利用Apache Common将java对象池化的问题
2022/06/16 Servers