使用Django新增檔案上傳功能
程式碼:https://github.com/jang0820/Django-MyWeb/tree/ad76d1e0a677c980eab6fef4d09ce70cd856f69f
Step1)在網站新增file應用程式。
#python manage.py startapp file
Step2)編輯/myweb/file/models.py,建立檔案的資料表
#python manage.py makemigrations
#python manage.py migrate
Step3)編輯/myweb/file/admin.py,透過http://127.0.0.1:8000/admin管理資料庫。
Step4)編輯/myweb/file/views.py
Step5)編輯/myweb/file/urls.py,讓url與view結合。
Step6)新增template,新增\myweb\file\templates\file\upload-file.html
Step7)編輯/myweb/myweb/urls.py,新增應用程式file的urls
urlpatterns = [
...
path('file/', include("file.urls")),
]
Step8)編輯/myweb/myweb/settings.py,在最前面新增以下設定,讓urlquote對應到urllib.parse.quote。
import django
from urllib.parse import quote
django.utils.http.urlquote = quote
import os
新增file應用程式。
INSTALLED_APPS = [
...
'file',
]
在myweb下建立資料夾media,在settings.py的最後面新增以下設定,所有檔案會自動上傳到/myweb/media/UploadedFile,會自動新增資料夾UploadedFile
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Step9)使用超級管理者進行登入,就可以上傳檔案,一般使用者需要有file.file_upload權限才能上傳檔案,需要有file.file_delete權限才能刪除檔案
超級管理者登入http://127.0.0.1:8000/admin,新增一般使用者file.file_upload與file.file_delete權限,如下圖。
Step10)使用剛剛新增權限的一般使用者登入,上傳檔案、下載檔案與刪除檔案,如下圖