使用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)使用剛剛新增權限的一般使用者登入,上傳檔案、下載檔案與刪除檔案,如下圖