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中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 Python
python如何使用unittest测试接口
Apr 04 Python
[原创]Python入门教程4. 元组基本操作
Oct 31 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
Python从文件中读取数据的方法讲解
Feb 14 Python
详解python:time模块用法
Mar 25 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
Python上下文管理器全实例详解
Nov 12 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
如何判断pytorch是否支持GPU加速
Jun 01 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
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
Python中isnumeric()方法的使用简介
2015/05/19 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
Python环境变量设置方法
2016/08/28 Python
Python实现识别手写数字大纲
2018/01/29 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
Python表达式的优先级详解
2020/02/18 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
悦木之源美国官网:Origins美国
2016/08/01 全球购物
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
软件测试面试题
2015/10/21 面试题
本科毕业生专业自荐书范文
2014/02/05 职场文书
八年级英语教学计划
2015/01/23 职场文书
展览会邀请函
2015/02/02 职场文书
岳庙导游词
2015/02/04 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
python中__slots__节约内存的具体做法
2021/07/04 Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js