python中Django檔案上傳方法詳解
阿新 • • 發佈:2020-08-06
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視訊教程》
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')) ]
效果圖
知識點擴充套件:
最簡單的檔案下載功能的實現
將檔案流放入HttpResponse物件即可,如
def file_download(request): # do something... with open('file_name.txt') as f: c = f.read() return HttpResponse(c)
到此這篇關於python中Django檔案上傳方法詳解的文章就介紹到這了,更多相關Django檔案上傳方法內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!