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编程实现12306的一个小爬虫实例
Dec 27 Python
Python3删除排序数组中重复项的方法分析
Jan 31 Python
Python3中函数参数传递方式实例详解
May 05 Python
Python创建或生成列表的操作方法
Jun 19 Python
Python Django 前后端分离 API的方法
Aug 28 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
Django配置文件代码说明
Dec 04 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 Python
python中setuptools的作用是什么
Jun 19 Python
Python 如何实现访问者模式
Jul 28 Python
Python趣味实战之手把手教你实现举牌小人生成器
Jun 07 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
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
js切换div css注意的细节
2012/12/10 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
python和C语言混合编程实例
2014/06/04 Python
Python中下划线的使用方法
2015/03/27 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
应届生服务员求职信
2013/10/31 职场文书
民间借贷借条如何写
2015/05/26 职场文书
追讨欠款律师函
2015/06/24 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js