Django ImageFiled上傳照片并顯示的方法
1:首先理解settings.py中
MEDIA_ROOT:
MEDIA_URL:這兩者之間的關(guān)系。
MEDIA_ROOT:就是保存上傳圖片的根目錄,比如說(shuō)MEIDA_ROOT ="C:\\Django\\Photo",則上傳的照片就在這個(gè)文件夾中,如果ImageFiled中設(shè)置了upload_to,這個(gè)upload_to則讓圖片是上述根目錄中子目錄中存儲(chǔ)。upload_to注意設(shè)置要區(qū)分有沒(méi)有 " / " ,例如 upload_to='photo' 與 upload_to = " /phto/ ”就會(huì)造成完全不同的后果,前面的用法是正確的。
MEDIA_URL:主要用于URL映射這塊,與urls.py中一個(gè)映射有關(guān)系
例如:MEDIA_URL = '/media/', 這個(gè)MEDIA_URL是添加在ImageFIeld中存儲(chǔ)路徑的公共目錄.例如
img=models.ImageField(upload_to='photo',null=False,blank=True)
則這個(gè)img的url屬性就是 “/media/photo/xxx.jpg ,然后就需要考慮在Url文件中的映射,要在模板中訪問(wèn)該圖片文件,則 img的src 設(shè)置為 {{ example.img.url }}即可
urls.py中應(yīng)該添加如下一條映射 (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
其中url中media就對(duì)應(yīng)著MEDIA_URL中的配置,對(duì) 這類網(wǎng)址的訪問(wèn)都映射到MEDIA_ROOT這個(gè)目錄,并根據(jù)ImageFIled中存儲(chǔ)的相對(duì)路徑進(jìn)行訪問(wèn)。
把上述這幾個(gè)之間關(guān)系弄明白,使用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上傳照片并顯示的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django執(zhí)行源生mysql語(yǔ)句實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Django執(zhí)行源生mysql語(yǔ)句實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11pip已經(jīng)安裝好第三方庫(kù)但pycharm中import時(shí)還是標(biāo)紅的解決方案
這篇文章主要介紹了python中pip已經(jīng)安裝好第三方庫(kù)但pycharm中import時(shí)還是標(biāo)紅的問(wèn)題,本文給大家分享解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10python 獲取當(dāng)天凌晨零點(diǎn)的時(shí)間戳方法
今天小編就為大家分享一篇python 獲取當(dāng)天凌晨零點(diǎn)的時(shí)間戳方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05使用Nginx+uWsgi實(shí)現(xiàn)Python的Django框架站點(diǎn)動(dòng)靜分離
這篇文章主要介紹了使用Nginx+uWsgi實(shí)現(xiàn)Python的Django框架站點(diǎn)動(dòng)靜分離的部署實(shí)例,即靜態(tài)由Nginx處理而Python頁(yè)面由Django自帶的HTTP服務(wù)器處理,需要的朋友可以參考下2016-03-03libreoffice python 操作word及excel文檔的方法
這篇文章主要介紹了libreoffice python 操作word及excel文檔的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python實(shí)現(xiàn)12306自動(dòng)搶火車(chē)票功能
一到國(guó)慶、春節(jié)這種長(zhǎng)假,搶火車(chē)票就非常困難?各大互聯(lián)網(wǎng)公司都推出搶票服務(wù),只要加錢(qián)給服務(wù)費(fèi)就可以增加搶到票的幾率。本文將和你一起探索搶票軟件背后的原理。2021-12-12python中斷time.sleep一種更優(yōu)雅的方式:event.wait
這篇文章主要介紹了python中斷time.sleep一種更優(yōu)雅的方式:event.wait,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Python利用contextvars實(shí)現(xiàn)管理上下文變量
Python?在?3.7?的時(shí)候引入了一個(gè)模塊:contextvars,從名字上很容易看出它指的是上下文變量。所以本文就來(lái)和大家詳細(xì)講講如何使用contextvars實(shí)現(xiàn)管理上下文變量,需要的可以參考一下2022-07-07python實(shí)現(xiàn)簡(jiǎn)易內(nèi)存監(jiān)控
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)易內(nèi)存監(jiān)控,每隔3秒獲取系統(tǒng)內(nèi)存,當(dāng)內(nèi)存超過(guò)設(shè)定的警報(bào)值時(shí),獲取所有進(jìn)程占用內(nèi)存并發(fā)出警報(bào)聲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06