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实现进程间通信简单实例
Jul 23 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
Python的装饰器使用详解
Jun 26 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
Aug 22 Python
python 实现线程之间的通信示例
Feb 14 Python
500行python代码实现飞机大战
Apr 24 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
python openCV自制绘画板
Oct 27 Python
python 逐步回归算法
Apr 06 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学习之流程控制实现代码
2011/06/09 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
js获取form的方法
2015/05/06 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
Python实现的字典值比较功能示例
2018/01/08 Python
python中set()函数简介及实例解析
2018/01/09 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
python实现批处理文件
2020/07/28 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
大学生评语大全
2014/04/18 职场文书
2014年环保局工作总结
2014/12/11 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
python自动计算图像数据集的RGB均值
2021/06/18 Python