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 从远程服务器下载东西的代码
Feb 10 Python
详解Python3中的Sequence type的使用
Aug 01 Python
python 网络编程详解及简单实例
Apr 25 Python
Python实现时钟显示效果思路详解
Apr 11 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
Python 列表去重去除空字符的例子
Jul 20 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
OpenCV 之按位运算举例解析
Jun 19 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 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 smarty模板引擎的6个小技巧
2014/04/24 PHP
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
纯javascript版日历控件
2016/11/24 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
详解Python中列表和元祖的使用方法
2015/04/25 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
小结Python的反射机制
2020/09/28 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
函授毕业自我鉴定
2013/12/19 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
护理专科自荐书范文
2014/02/18 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
学校实习推荐信
2015/03/27 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
新教师教学工作总结
2015/08/14 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript