使用Django新增檔案上傳功能

程式碼:https://github.com/jang0820/Django-MyWeb/tree/edb2c650e93a84e184becd0901e1884f4c2fafd2

Step1)在網站新增news應用程式。

#python manage.py startapp news

Step2)編輯/myweb/file/models.py,建立最新消息的資料表

Step3)編輯/myweb/file/admin.py,透過http://127.0.0.1:8000/admin管理資料表News

Step4)編輯/myweb/file/views.py

Step5)編輯/myweb/file/urls.py,讓url與view結合。

Step6)新增template

新增\myweb\news\templates\news\news_list.html

新增\myweb\news\templates\news\news_create.html

新增\myweb\news\templates\news\news_delete.html

新增\myweb\news\templates\news\news_detail.html

新增\myweb\news\templates\news\news_update.html

新增\myweb\templates\base.html

Step7)編輯/myweb/myweb/urls.py,新增應用程式news的urls

urlpatterns = [

    ...

    path('news/', include("news.urls")),

]

Step8)編輯/myweb/myweb/settings.py


新增news應用程式。

INSTALLED_APPS = [

    ...

    'news',

]


在myweb下建立資料夾media,在settings.py的最後面新增以下設定,所有檔案會自動上傳到/myweb/media/newsfile,會自動新增資料夾newsfile

MEDIA_URL = '/media/'

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


Step9)使用超級管理者進行登入,就可以上傳檔案,一般使用者需要有news.news_create權限才能新增公告,需要有news.news_delete權限才能刪除公告,需要有news.news_update權限才能更新公告

超級管理者登入http://127.0.0.1:8000/admin,新增一般使用者news.news_create、news.news_delete與news.news_update權限,如下圖。

Step10)使用剛剛新增權限的一般使用者登入,新增、修改與刪除公告,如下圖