1. 程式人生 > 程式設計 >python中Django檔案上傳方法詳解

python中Django檔案上傳方法詳解

Django上傳檔案最簡單最官方的方法

1.配置media路徑

在settings.py中新增如下程式碼:

MEDIA_ROOT=os.path.join(BASE_DIR,'media')

2.定義資料表

importos
fromdjango.dbimportmodels
fromdjango.utils.timezoneimportnowastimezone_now
defupload_to(instance,filename):
now=timezone_now()
base,ext=os.path.splitext(filename)
ext=ext.lower()
returnf'quotes/{now:%Y/%m/%Y%m%d%H%M%S}{ext}'
classQuote(models.Model):
classMeta:
verbose_name='quote'
verbose_name_plural=verbose_name
author=models.CharField('author',max_length=200)
quote=models.TextField('quote')
picture=models.ImageField('picture',upload_to=upload_to,blank=True,null=True)
def__str__(self):
returnself.quote

這裡的upload_to函式會自動把檔案的名稱修改為日期型的名稱,不會重名。

相關推薦:《Python視訊教程》

zz.png

3.新增form表單

forms.py檔案

fromdjangoimportforms
from.modelsimportQuote
classQuoteForm(forms.ModelForm):
classMeta:
model=Quote
fields='__all__'

4.編寫檢視程式碼

fromdjango.shortcutsimportrender,redirect
from.formsimportQuoteForm
defadd_quote(request):
form=QuoteForm()
ifrequest.method=='POST':
form=QuoteForm(
data=request.POST,files=request.FILES
)
ifform.is_valid():
form.save()
returnredirect('quote:add_quote')
else:
returnrender(request,'quotes/add_quote.html',{
'form':form
})

5.編寫模板html程式碼

<formaction="{%url'quote:add_quote'%}"method="post"enctype="multipart/form-data">
{%csrf_token%}
{{form.as_p}}
<buttontype="submit">save</button>
</form>

6.新增url對映

在app的目錄的urls.py新增
fromdjango.urlsimportpath
fromquotes.viewsimportadd_quote
app_name='quote'
urlpatterns=[
path('add/',add_quote,name='add_quote')
]

在專案目錄的urls.py檔案新增

fromdjango.urlsimportpath,include
urlpatterns=[
path('quotes/',include('quotes.urls',namespace='quote'))
]

效果圖

xx.png

知識點擴充套件:

最簡單的檔案下載功能的實現

將檔案流放入HttpResponse物件即可,如

def file_download(request):
 # do something...
 with open('file_name.txt') as f:
  c = f.read()
 return HttpResponse(c)

到此這篇關於python中Django檔案上傳方法詳解的文章就介紹到這了,更多相關Django檔案上傳方法內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!