django中上傳的檔案,除了使用普通的方式接收外,還可以通過orm模型來自動接收。
下面是一種較為通用的檔案提交方式,這種方式需要注意,form
標籤的enctype
屬性值必須為multipart/form-data
,用於檔案提交的input
標籤的type
屬性值也必須是file
,當然,請求method
也需要是post
。
普通的檔案接收方式就是將request.files
中的檔案物件獲取出來再手動寫入乙個新的檔案即可。
# 新建乙個檢視
class indexview(view):
# 返回檔案上傳的介面
def get(sel, request):
return render(request, 'index.html')
# 獲取上傳的檔案,並儲存到新的檔案中
def post(self, request):
myfile = request.files.get('myfile')
with open('somefile.txt', 'wb') as fp:
for chunk in myfile.chunks():
fp.write(chunk)
return httpresponse('success!')這種方式需要在orm模型中定義乙個models.filefield
字段,並指定upload_to
引數,此引數為檔案存放的目錄路徑,是乙個相對於專案根目錄的相對路徑。upload_to
引數除了直接指定路徑名外,還可以使用當前日期來指定路徑,如%y/%m/%d/
表示根據當前的年月日資訊新建三層目錄,上傳的檔案就放在此目錄下(字串中的斜槓表示路徑分隔符)。指定的目錄不存在的話,會自動新建。
注1:如果在settings.py
中配置了media_root
,則缺省會將上傳的檔案放在此目錄下,如果同時也指定了uplodad_to
引數,則會在此目錄下再新建對應目錄來存放檔案。
注2:如果要上傳,可以使用models.imagefield
字段,用法和models.filefield
是一樣的。使用這個欄位時,如果提示安裝pillow
庫,則按提示安裝即可,django中處理需要用到這個庫。安裝方法:pip install pillow
。
from django.db import models
# 隨意新建乙個orm模型
class article(models.model):
title = models.charfield(max_length=100)
content = models.textfield()
file = models.filefield(upload_to='upload_files')
# 可以按照日期來新建目錄,注意斜槓表示目錄分隔,%y/%m/%d/會新建三層目錄
# 獲取檔案並使用orm模型來進行自動儲存
file = request.files.get('myfile')
# 除了會將提交資訊儲存到資料庫中,還會自動將檔案儲存到upload_to引數指定的目錄下
Django學習筆記之檔案上傳
django在處理檔案上傳的時候,檔案資料被儲存在了request.files。files中的每個鍵為中的name 設定檔案的儲存路徑 1.在專案根目錄下static中建立media資料夾 2.上傳後,會被儲存到 static media 檔案 3.開啟settings.py檔案,增加media r...
django 檔案上傳
檔案上傳 當django處理上傳乙個檔案的時候,檔案資料被放在request.files中。這個文件解釋檔案怎麼樣被儲存在磁碟上或者記憶體中,怎樣定製預設的行為。基本檔案上傳 考慮乙個包含filefield的簡單的表單 from django import forms class uploadfil...
django 檔案上傳
檔案上傳 當django處理上傳乙個檔案的時候,檔案資料被放在request.files中。這個文件解釋檔案怎麼樣被儲存在磁碟上或者記憶體中,怎樣定製預設的行為。基本檔案上傳 考慮乙個包含filefield的簡單的表單 from django import forms class uploadfil...