Django: 이미지를 표시하기 위한 미디어 설정

2235 단어
1. settings 설정
Django는 백엔드(admin 또는 xadmin)를 통해 그림을 업로드하기 전에 미디어 경로와 폴더를 설정해야 합니다.
주 처리ImageField 필드, 여기 uploadto에서 %Y는 연, %m는 월을 나타낸다.
class CourseOrg(models.Model):
    image = models.ImageField(default='', upload_to='org/%Y/%m', verbose_name='logo', max_length=100)

프로젝트 디렉터리에 새 폴더 media 를 만들고 settings에 미디어 경로와 디렉터리를 설정합니다.
import os
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

2. 템플릿의 이미지 주소
ImageField를 어떻게 이미지 주소로 바꿉니까?
우선, ImageField 저장 방식은 문자열이고 그림의 상대적인 경로 주소입니다.{{ course_org.image }}는 상대 경로이며 settings에 구성된 MEDIA 를 앞에 추가해야 합니다.URL
![]({{ MEDIA_URL }}{{ org.image }})

3. settings에서 템플릿을 구성하는 프로세서
TEMPLATES의 OPTIONS의 context프로세스ors에 'django.template.context_processors.media'를 추가해야 합니다.
이것은 Django 1.8 이전'django.core.context_processors.media'부터였고, 지금은 Django 1.11부터 context_processors.media코어에서 가이드 템플레이트로 바뀌었다.
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                #...
                'django.template.context_processors.media',
            ],
        },
    },
]

이 단계에서는 그림을 표시할 수 없습니다. 웹 소스 코드에서 그림이 있는 주소를 볼 수 있습니다.그러나 urls에서 그림 주소의 경로를 설정해서 Django가 그곳에 가서 그림을 찾을 수 있도록 해야 한다.
4. urls 구성
정적 파일을 처리하는 방법을 도입해야 합니다
from django.views.static import serve

또한 settings에서 설정된 미디어 디렉터리 주소 MEDIA 를 도입해야 합니다.ROOT
from MxOnline.settings import MEDIA_ROOT

마지막으로 URL에 완전하게 설정하면 다음과 같습니다
# -*- coding:utf-8 -*-
from django.views.static import serve
from MxOnline.settings import MEDIA_ROOT

urlpatterns = [
    #    media   ,      
    url(r'^media/(?P.*)', serve, {"document_root":MEDIA_ROOT}),
]

이로써 그림이 나타날 수 있다.

좋은 웹페이지 즐겨찾기