1. 程式人生 > 實用技巧 >django media相關配置

django media相關配置

media和static的區別:

static屬於靜態資源如:css\js\font\logo
media屬於使用者資料、網站資料如:上傳的頭像、產品圖片、個人相簿,這些內容關聯到使用者、產品...身上,具有資料訪問的操作(增刪改查),又需要url進行訪問.不屬於python manage.py collectstatic需要的內容

如果static和media混雜在一起,一旦這些資源過於龐大後,python manage.py collectstatic白白佔用了硬碟儲存

使用:

index.html:

<img src="{{ MEDIA_URL }}{{ product.main_img }}" class="card-img-top" alt="...">

相關配置

settings.py:

...
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',    #新增,用於template tag----{{ MEDIA_URL }}
            ],
        },
    },
]
...
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

urls.py:

from django.urls import path
from main_app import views

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('',views.IndexView.as_view(),name="index"),
    path('product/index/',views.ProductView.as_view(),name="product"),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)   #新增用於url的訪問

參考連結

https://docs.djangoproject.com/en/3.1/ref/settings/#std:setting-MEDIA_ROOT