Django實(shí)現(xiàn)圖片上傳功能步驟解析
1.首先是html頁(yè)面的form表單的三大屬性,action是提交到哪,method是提交方式,enctype只要有圖片上傳就要加這個(gè)屬性
Django框架自帶csrf_token ,所以需要在前端頁(yè)面也生成csrf_token字符串,來驗(yàn)證真實(shí)客戶
<form action="/pic_upload/" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file">
<input type="submit" value="提交">
</form>
2.如下是上傳圖片的接口:
def pic_upload(request):
if request.method == "GET":
return render(request,"helloapp/pic_upload.html",locals())
if request.method == "POST":
error = ""
fp = request.FILES.get("file")
# fp 獲取到的上傳文件對(duì)象
if fp:
path = os.path.join(STATICFILES_DIRS[0],'image/' + fp.name) # 上傳文件本地保存路徑, image是static文件夾下專門存放圖片的文件夾
# fp.name #文件名
#yield = fp.chunks() # 流式獲取文件內(nèi)容
# fp.read() # 直接讀取文件內(nèi)容
if fp.multiple_chunks(): # 判斷上傳文件大于2.5MB的大文件
# 為真
file_yield = fp.chunks() # 迭代寫入文件
with open(path,'wb') as f:
for buf in file_yield: # for情況執(zhí)行無(wú)誤才執(zhí)行 else
f.write(buf)
else:
print("大文件上傳完畢")
else:
with open(path,'wb') as f:
f.write(fp.read())
print("小文件上傳完畢")
models.ImgPath.objects.create(path=('image/' + fp.name)) # image是static文件夾下專門存放圖片的文件夾
else:
error = "文件上傳為空"
return render(request,"helloapp/pic_upload.html",locals())
return redirect("helloapp/pic_index/") # 重定向到首頁(yè)
3.做個(gè)圖片展示的頁(yè)面,對(duì)圖片展示對(duì)應(yīng)的接口傳過來的參數(shù)加以判斷
{% for img in imgs %}
<img src="{% static img.path %}">
{% empty %}
<h1>您沒有上傳任何圖片</h1>
{% endfor %}
4.圖片展示的接口:
def pic_index(request): imgs = models.ImgPath.objects.all() return render(request,'helloapp/pic_index.html',locals())
至此,Django中一個(gè)簡(jiǎn)單的圖片上傳到展示就做好了
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Django 實(shí)現(xiàn)圖片上傳和下載功能
- 在django中圖片上傳的格式校驗(yàn)及大小方法
- django mysql數(shù)據(jù)庫(kù)及圖片上傳接口詳解
- Django 實(shí)現(xiàn)圖片上傳和顯示過程詳解
- Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作分析
- django將圖片上傳數(shù)據(jù)庫(kù)后在前端顯式的方法
- Django后臺(tái)獲取前端post上傳的文件方法
- 利用django如何解析用戶上傳的excel文件
- Python+django實(shí)現(xiàn)文件上傳
- django實(shí)現(xiàn)圖片上傳數(shù)據(jù)庫(kù)并顯示
相關(guān)文章
Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)
最近在學(xué)習(xí)Django,本文主要介紹了Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
Python進(jìn)行數(shù)據(jù)提取的方法總結(jié)
數(shù)據(jù)提取是分析師日常工作中經(jīng)常遇到的需求。如某個(gè)用戶的貸款金額,某個(gè)月或季度的利息總收入,某個(gè)特定時(shí)間段的貸款金額和筆數(shù),大于5000元的貸款數(shù)量等等。本篇文章介紹如何通過python按特定的維度或條件對(duì)數(shù)據(jù)進(jìn)行提取,完成數(shù)據(jù)提取需求。2016-08-08
Python列表常見操作詳解(獲取,增加,刪除,修改,排序等)
這篇文章主要介紹了Python列表常見操作,結(jié)合實(shí)例形式總結(jié)分析了Python列表常見的獲取、增加、刪除、修改、排序、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02
conda創(chuàng)建pytorch環(huán)境報(bào)錯(cuò)
這篇文章主要介紹了conda創(chuàng)建pytorch環(huán)境報(bào)錯(cuò),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04
解決pycharm下os.system執(zhí)行命令返回有中文亂碼的問題
今天小編就為大家分享一篇解決pycharm下os.system執(zhí)行命令返回有中文亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07

