Django ImageFiled上传照片并显示的方法
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
其中url中media就对应着MEDIA_URL中的配置,对这类网址的访问都映射到MEDIA_ROOT这个目录,并根据ImageFIled中存储的相对路径进行访问。
把上述这几个之间关系弄明白,使用ImageField上传图片并显示就很容易
参考下列例子
#models.py classImg(models.Model): name=models.CharField(max_length=30) img=models.ImageField(upload_to='photo',null=False,blank=True) def__unicode__(self): returnself.name
#forms.py classImgForm(ModelForm): classMeta: model=Img
#views.py @csrf_exempt defadd(request): ifrequest.method=='POST': form=ImgForm(request.POST,request.FILES) ifform.is_valid(): form.save() else: form=ImgForm() returnrender_to_response('add.html',{'form':form}) deflist(request): template_var={} photos=Img.objects.all() template_var['pics']=photos returnrender_to_response('list.html',template_var, context_instance=RequestContext(request))
#settings.py MEDIA_ROOT="/xxxxx/media/" #URLthathandlesthemediaservedfromMEDIA_ROOT.Makesuretousea #trailingslashifthereisapathcomponent(optionalinothercases). #Examples:"http://media.lawrence.com","http://example.com/media/" MEDIA_URL='/media/'
#urls.py (r'^media/(?P.*)$','django.views.static.serve',{'document_root':settings.MEDIA_ROOT}),
#模板 {%forphotoinpics%}
{{photo.name}} {%endfor%}
#模板{{form.as_p}}
以上这篇DjangoImageFiled上传照片并显示的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。