如何在Django中使用ImageFiled上传照片并显示?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<强> 1:首先理解设置。py中强>
MEDIA_ROOT:
MEDIA_URL:这两者之间的关系。
MEDIA_ROOT:就是保存上传图片的根目录,比如说MEIDA_ROOT=癈: \ \ Django \ \ Photo",则上传的照片就在这个文件夹中,如果ImageFiled中设置了upload_to,这个upload_to则让图片是上述根目录中子目录中存储.upload_to注意设置要区分有没有“/?,例如upload_to=& # 39;照片# 39;与upload_to=?/phto/本突嵩斐赏耆煌暮蠊?前面的用法是正确的。
MEDIA_URL:主要用于URL映射这块,与URL。py中一个映射有关系
例如:MEDIA_URL=& # 39;/媒体/& # 39;,这个MEDIA_URL是添加在ImageFIeld中存储路径的公共目录,例如
img=models.ImageField (upload_to=& # 39;照片# 39;,null=False,空白=True)
则这个img的url属性就是“/媒体/照片/xxx.jpg,然后就需要考虑在url文件中的映射,要在模板中访问该图片文件,则img的src设置为{{example.img。url}}即可
url。py中应该添加如下一条映射(" # 39;^媒体/(?术;path>。*) & # 39;美元,& # 39;django.views.static.serve& # 39;, {& # 39; document_root # 39;: settings.MEDIA_ROOT}),
其中url中媒体就对应着MEDIA_URL中的配置,对这类网址的访问都映射到MEDIA_ROOT这个目录,并根据ImageFIled中存储的相对路径进行访问。
把上述这几个之间关系弄明白,使用ImageField上传图片并显示就很容易
<强>参考下列例子强>
# models.py class Img (models.Model): name=models.CharField (max_length=30) img=models.ImageField (upload_to=& # 39;照片# 39;,null=False,空白=True) def __unicode__(自我): return self.name
# forms.py class ImgForm (ModelForm): class 元: 模型=Img
# views.py @csrf_exempt def 添加(请求): if request.method ==, & # 39;文章# 39;: 时间=form ImgForm (request.POST request.FILES) if form.is_valid (): form.save () 其他: 时间=form ImgForm () return render_to_response (& # 39; add.html& # 39;,,{& # 39;形式# 39;:,形式}) , , def 清单(要求): template_var才能={} 照片才能=Img.objects.all () template_var才能[& # 39;图片# 39;]=照片 return 才能;render_to_response (& # 39; list.html& # 39;, template_var, ,,,,,,,,,,,context_instance=RequestContext(请求)
# settings.py 时间=MEDIA_ROOT “xxxxx/媒体/? , #,URL that  handles 从而media served 得到MEDIA_ROOT只Make sure 用use #,trailing slash  if there is a path component (optional other 拷贝;病例)。 #,例子:,“http://media.lawrence.com",,“http://example.com/media/" MEDIA_URL =, & # 39;/媒体/& # 39;
# urls . py (" # 39;^媒体/(?术;path>。*) $ & # 39;,, & # 39; django.views.static.serve& # 39;,, {& # 39; document_root # 39;:, settings.MEDIA_ROOT}),
#模板 & lt; body> {%,for photo 拷贝pics %} & lt; h4> & lt; p 类=癵reentitle"祝辞,{{photo.name}}, & lt;/p> & lt;/h4> & lt; a  href=https://www.yisu.com/zixun/眥{photo.img.url}}”rel="外部nofollow”> > {% endfor %} 身体>
#模板 & lt; body> , & lt;才能form enctype=岸嗖糠?form-data", action=啊?方法=皃ost"比; , ,,,{{,form.as_p }} , ,,,& lt; input 类型=皊ubmit" https://www.yisu.com/zixun/, value=" Submit "/> 形式 身体>
关于如何在Django中使用ImageFiled上传照片并显示问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。