django media相關配置
阿新 • • 發佈:2020-12-22
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