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实现的批量下载RFC文档
Mar 10 Python
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
Python中six模块基础用法
Dec 08 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
python中zip()函数遍历多个列表方法
Feb 18 Python
如何在Python项目中引入日志
May 31 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连接access数据库
2008/03/27 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
php实现微信支付之退款功能
2018/05/30 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
深入理解NumPy简明教程---数组2
2016/12/17 Python
python PyTorch预训练示例
2018/02/11 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
pandas参数设置的实用小技巧
2020/08/23 Python
python PIL模块的基本使用
2020/09/29 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
美国电视购物:QVC
2017/02/06 全球购物
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
安全生产演讲稿
2014/05/09 职场文书
校庆活动策划方案
2014/06/05 职场文书
委托书如何写
2014/08/30 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
法律意见书范本
2015/06/04 职场文书
Java设计模式之代理模式
2022/04/22 Java/Android