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中类的继承代码实例
Oct 28 Python
Python实现自动发送邮件功能
Mar 02 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
python3实现跳一跳点击跳跃
Jan 08 Python
python如何发布自已pip项目的方法步骤
Oct 09 Python
Python循环实现n的全排列功能
Sep 16 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
Python可视化工具如何实现动态图表
Oct 23 Python
Python根据字符串调用函数过程解析
Nov 05 Python
python基础之匿名函数详解
Apr 21 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
php 获取远程网页内容的函数
2009/09/08 PHP
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
python2.7到3.x迁移指南
2018/02/01 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
关于python3中setup.py小概念解析
2019/08/22 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
Django框架请求生命周期实现原理
2020/11/13 Python
日期和时间问题
2015/01/04 面试题
会计专业大学生职业生涯规划书
2014/02/11 职场文书
讲座主持词
2014/03/20 职场文书
创先争优承诺书范文
2014/03/31 职场文书
保健品市场营销方案
2014/03/31 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
小学生暑假安全公约
2015/07/14 职场文书
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技