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 client使用http post 到server端的代码
Feb 10 Python
Windows8下安装Python的BeautifulSoup
Jan 22 Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
Python 经典面试题 21 道【不可错过】
Sep 21 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
对python中Librosa的mfcc步骤详解
Jan 09 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 Python
深入了解NumPy 高级索引
Jul 24 Python
Python 如何创建一个线程池
Jul 28 Python
Python实现小黑屋游戏的完整实例
Jan 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
mysql5详细安装教程
2007/01/15 PHP
PHP 第一节 php简介
2012/04/28 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
Python数据类型详解(二)列表
2016/05/08 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
Python实现读取json文件到excel表
2017/11/18 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
如何将json数据转换为python数据
2020/09/04 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
门诊挂号室室长岗位职责
2013/11/27 职场文书
毕业生求职的求职信
2013/12/05 职场文书
采购求职信
2014/03/17 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
2014年法院工作总结
2014/11/24 职场文书
干部考核工作总结2015
2015/07/24 职场文书
食品卫生管理制度
2015/08/06 职场文书
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技