1. 程式人生 > 其它 >django-admin實現檔案上傳下載

django-admin實現檔案上傳下載

參考:

https://www.cnblogs.com/zerotest/p/14387266.html

https://blog.csdn.net/iteye_10850/article/details/82615387

在網站中對使用者開放上傳下載功能是很常見的需求。

最近領導提出,我們的api註冊中心,需要支援使用者使用python指令碼對結果進行格式轉換

於是我們添加了檔案的上傳下載功能

一、模型models

在模型中指定儲存檔案的欄位

#底層mysql還是一個varchar型別,存的是檔案在專案中的相對路徑
result_filter = models.FileField(upload_to='{app_name}/
', blank=True, null=True,max_length=100,verbose_name='結果轉換指令碼')

二、settings檔案中指定檔案目錄

settings加入

MEDIA_URL = 'file/'
MEDIA_ROOT = 'file/'

MEDIA_ROOT = 'file/'

於是上傳檔案的路徑就是MEDIA_ROOT = 'file/'與upload_to='appname/'連起來file/appname/

上傳a.txt,目錄為file/appname/a.txt。

MEDIA_URL = 'file/'

表示任何上傳檔案連結字首為'file/'與upload_to='appname/'連起來file/appname/

三、urls.py中配置上傳下載的介面

這個是全域性的urls.py

from django.conf import settings
from django.contrib import admin
from django.urls import path, include, re_path
from django.views.static import serve

urlpatterns = [
#...
    re_path(r"file/(?P<path>.*)$", serve, {"document_root": settings.MEDIA_ROOT}),
    
]

這樣就大功告成了