1. 程式人生 > >Django框架(十六:上傳圖片到自定義目錄下)

Django框架(十六:上傳圖片到自定義目錄下)

如何將圖片上傳到自定義目錄下

upload_to: 在根目錄下(MEDIA_ROOT)要生成的目錄
MEDIA_ROOT: 只要上傳圖片,肯定要設定,用於指定圖片上傳的根目錄。可以設定在static下(static目錄的搜尋路徑,已經通過STATICFILES_DIRS配置過了),也可以自定義根目錄(MEDIA_URL)。

在上一篇已經介紹了將圖片上傳到static目錄下的設定,現在我們來實現將圖片上傳自自定義目錄下。

  1. 首先設定settings.py檔案,如下:其中MEDIA_ROOT是隻要上傳圖片就要設定的;MEDIA_URL主要作用就是對映MEDIA_ROOT。方便以後在展示圖片的時候,可以使用這個鍵找到它的值。否則圖片可以上傳,但是無法載入圖片。
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
from django.shortcuts import render
from django.http import HttpResponse
from .models import *

def uploadimg(request):
    if request.method == 'GET':
        img = Picture.objects.get(id=1)
        return render(request,'index.html',{'img':img})
    else:
        file = request.FILES.get('pic')
        pic = Picture(pic_url=file)
        pic.save()

        return HttpResponse('圖片上傳成功!')
  1. 重點在urls.py檔案中的設定,
from django.contrib import admin
from django.urls import path, re_path
from upload import views

from django.views.static import serve
from django.conf import settings

urlpatterns = [
    path('admin/', admin.site.urls),
    path('uploadimg/', views.uploadimg),
    #  作用:將上傳的圖片展示,用到了剛開始介紹到settings.py檔案中的設定。
    re_path(r'^media/(.*)$', serve, {'document_root':settings.MEDIA_ROOT})
]