Django上傳和加載文件

此文章以上傳/加載圖片為例進行說明如何在DJango中上傳和加載文件。

1.安裝插件Pillow

Pillow是一個專門處理圖片的插件

pip install Pillow

2.添加media目錄

上傳的圖片或文件都屬于外部資源,保存這類資源,通常的做法是建一個名為media的文件夾,用來存儲外部上傳的資源。


14.png

3.model中添加存儲圖片路徑的屬性

要存儲一個文件,實質是把文件的路徑存儲在數據庫中,通過訪問路徑,加載文件信息。DJango中存儲圖片用ImageFiled數據類型,圖片路徑存儲格式:目錄/圖片名稱。通過參數upload_to指定目錄,此目錄不需要提前建立,在遷移數據庫時會自動在media目錄下創建對應的文件夾。
實例:

i_image = models.ImageField(upload_to='upload', null=True)

目錄:


image.png

圖片存儲在數據庫中的路徑如下:upload/圖片名稱


2.png

4.遷移數據庫

python manage.py makemigrations
python manage.py migrate

5.頁面上傳圖片

在html中,上傳文件用file類型


上傳圖片.png

頁面效果如下:


頁面效果.png

6.獲取頁面數據,存入數據庫

知識點:
a.request.FILES.get()

獲取圖片信息,用request的FILES方法

StudentInfo.objects.create(
    i_addr=request.POST.get('addr'),
    s_id=request.POST.get('stu_id'),
    # 獲取圖片用FILES
    i_image=request.FILES.get('image')
)

7.頁面加載圖片

注意:img的路徑不是直接獲取的數據庫中圖片的路徑,而是需要在數據庫路徑前面加上/media/,這是因為模型中設置的路徑是從media目錄下開始,所以在加載圖片時需要在前面加上media目錄。

<img src="/media/{{ i.studentinfo.i_image }}"  width="100px" height="100px">

8.在setting.py文件中完成路徑配置

配置上傳文件路徑,upload中沒有存放文件的主目錄media,所以需要配置MEDIA_URL和MEDIA_ROOT,這樣在上傳文件時,程序才知道保存在具體的路徑。

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

9.配置主目錄的urls.py文件

通過如下配置,把MEDIA配置成靜態文件。

from django.contrib.staticfiles.urls import static

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容