django的文件 图片上传(简单方法)

作者: wwaiym
发布时间:2015-07-14 15:40:25

django的文件 图片上传

一直以为django的文件跟图片上传问题很麻烦,在网上找了好久,找了很多麻烦的方法 但是效果还不好,今天在无意中突然发现其实很简单,简单的要死! 晕!

 

以前我是这样写views的:     (这是在有forms.py的情况下 )

from PIL import Image

from juxin import settings

 

            f = request.FILES["file"]  (如果是直接上传的话<没有forms.py>用request.FILES.get['file'])

            parser = ImageFile.Parser()  

            for chunk in f.chunks():

                parser.feed(chunk)  

            img = parser.close()

            name = '%s%s' % (settings.MEDIA_ROOT, f.name)  ##这里的时保存文件的路径加名字!

            img.save(name) 

  这种方法可以将图片保存到你想要的位置,也可以是文件!但是怎么在templates上显示上传的图片就是个麻烦问题,要重新设置MEDIA_ROOT,跟STATIC_ROOT,所以不推荐使用!

 

下面介绍最简单的方法!!!

 

那就是!!!:::

1:当然要先设置models.py 

image= models.ImageField(upload_to='photos/%Y/%m/%d', blank=True,null=True)

                                这里的upload_to是必须的参数,他会把上传的文件保存到MEDIA_root +upload_to后便的路径,

 

2:然后设置跟form.py

   image = forms.ImageField(required=False)  

3:前台的是这样的post数据

 

<form action="/upload/" method="post" enctype="multipart/form-data">这个是一定要有的,如果你还要上传文字或者其他的东西,在form中间加就行了,比喻<legend>标题</legend>  <input type="text" name="title" id="title">

<form>

<fieldset>

<legend>上传文件</legend>

<input type="file" name="docfile" />

<input type="submit" value="上传"/>

</fieldset>

</form>

 

 

 

4:再就是views.py了,要先导入forms中的类!

 

           if 'file' in request.FILES:  这里是重点!为什么我要判断file呢?因为如果你想不传文件(也就是字段为空),但是还是要传其他的字段(如:我只想传标题,而图片我不传),  那么必 须要判断下。不然会报错"Key 'file' not found in <MultiValueDict: {}>"

                image = request.FILES["file"]

            else:

                image=None

然后把得到的图片保存到数据库,django保存的知识图片或者文件的url,图片保存在本地计算机上,这样提高django运行效率,s=Info(image=image)

            s.save()

 

5:  最后一步就是让图片在templates中显示了!!!!

 

{% if info.image %}<img src='{{ info.image.url }}' />{% endif %}

   在django book里说得到图片的绝对路径是这样的:{{ info.get_image_url }},这个是错误的!!这个是0.9版本的用法!

 

 

当然 这里也要做下判断,如果image为null的话,他就不显示,注意: 这里判断的不是{% if info.image.url %}!

版权声明:本文为博主原创文章,未经博主允许不得转载。

标签: Django Go
来源:http://blog.csdn.net/wwaiym/article/details/5820768

推荐: