Django ImageFiled上传照片并显示的方法


Posted in Python onJuly 28, 2019

1:首先理解settings.py中

MEDIA_ROOT:

MEDIA_URL:这两者之间的关系。

MEDIA_ROOT:就是保存上传图片的根目录,比如说MEIDA_ROOT ="C:\\Django\\Photo",则上传的照片就在这个文件夹中,如果ImageFiled中设置了upload_to,这个upload_to则让图片是上述根目录中子目录中存储。upload_to注意设置要区分有没有 " / " ,例如 upload_to='photo' 与 upload_to = " /phto/ ”就会造成完全不同的后果,前面的用法是正确的。

MEDIA_URL:主要用于URL映射这块,与urls.py中一个映射有关系

例如:MEDIA_URL = '/media/', 这个MEDIA_URL是添加在ImageFIeld中存储路径的公共目录.例如

img=models.ImageField(upload_to='photo',null=False,blank=True)

则这个img的url属性就是 “/media/photo/xxx.jpg ,然后就需要考虑在Url文件中的映射,要在模板中访问该图片文件,则 img的src 设置为 {{ example.img.url }}即可

urls.py中应该添加如下一条映射 (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),

其中url中media就对应着MEDIA_URL中的配置,对 这类网址的访问都映射到MEDIA_ROOT这个目录,并根据ImageFIled中存储的相对路径进行访问。

把上述这几个之间关系弄明白,使用ImageField上传图片并显示就很容易

参考下列例子

#models.py
class Img(models.Model):
	name=models.CharField(max_length=30)
	img=models.ImageField(upload_to='photo',null=False,blank=True)
	def __unicode__(self):
		return self.name
#forms.py
class ImgForm(ModelForm):
	class Meta:
		model=Img
#views.py
@csrf_exempt 
def add(request):
	if request.method == 'POST':
		form = ImgForm(request.POST,request.FILES)
		if form.is_valid():
			form.save()
	else:
		form = ImgForm()
	return render_to_response('add.html', {'form': form})
 
 
def list(request):
  template_var={}
  photos=Img.objects.all()
  template_var['pics']=photos
  return render_to_response('list.html',template_var,
            context_instance=RequestContext(request))
#settings.py
MEDIA_ROOT = "/xxxxx/media/"
 
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = '/media/'
#urls.py
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
#模板
<body>
	{% for photo in pics %}
		<h3><p class="greentitle"> {{photo.name}} </p></h3>
		<a href="{{photo.img.url}}" rel="external nofollow" ><img src="{{photo.img.url}}" alt="{{photo.img.url}}"></img></a>
		{% endfor %}
</body>
#模板
<body>
 
  <form enctype="multipart/form-data" action="" method="post">
 
    {{ form.as_p }}
 
    <input type="submit" value="Submit" />
 
  </form>
 
</body>

以上这篇Django ImageFiled上传照片并显示的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中的循环语句的用法
Apr 09 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
Python实现将数据库一键导出为Excel表格的实例
Dec 30 Python
浅谈python之新式类
Aug 12 Python
一看就懂得Python的math模块
Oct 21 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
Mar 01 Python
python使用selenium实现批量文件下载
Mar 11 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 Python
Python何绘制带有背景色块的折线图
Apr 23 Python
Python线上环境使用日志的及配置文件
Jul 28 #Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 #Python
处理python中多线程与多进程中的数据共享问题
Jul 28 #Python
在django中图片上传的格式校验及大小方法
Jul 28 #Python
python之生产者消费者模型实现详解
Jul 27 #Python
python单线程下实现多个socket并发过程详解
Jul 27 #Python
如何使用python操作vmware
Jul 27 #Python
You might like
用文本文件制作留言板提示(下)
2006/10/09 PHP
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
Python切片用法实例教程
2014/09/08 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
Python爬虫解析网页的4种方式实例及原理解析
2019/12/30 Python
python实现canny边缘检测
2020/09/14 Python
Python eval函数介绍及用法
2020/11/09 Python
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
银行类自荐信
2014/02/04 职场文书
护士求职自荐信范文
2014/03/19 职场文书
男女朋友协议书
2014/04/23 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
python计算列表元素与乘积详情
2022/08/05 Python