Django筆記 檔案上傳

2022-06-18 19:36:12 字數 2541 閱讀 5338

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...