복붙노트

[PYTHON] 장고 개발 중 정적 미디어 검색 : MEDIA_ROOT를 사용하지 않는 이유는 무엇입니까?

PYTHON

장고 개발 중 정적 미디어 검색 : MEDIA_ROOT를 사용하지 않는 이유는 무엇입니까?

개발 도중 장고로 정적 미디어를 제공하는 방법에 대한이 가이드를 읽었습니다.

MEDIA_URL 및 MEDIA_ROOT가이 용도로 사용되지 않았 음을 확인했습니다. 왜? 차이점이 뭐야?

나는 MEDIA_URL과 MEDIA_ROOT로 해보려고 시도했는데 이상한 결과를 얻었습니다.

해결법

  1. ==============================

    1.프로덕션 환경에서는 Django / Python 프로세스에 추가로드가 발생하지 않도록 프런트 엔드 웹 서버 (Apache, Nginx 등)에서 미디어를 제공해야합니다. 일반적으로 MEDIA_URL 및 MEDIA_ROOT가이 용도로 사용됩니다.

    프로덕션 환경에서는 Django / Python 프로세스에 추가로드가 발생하지 않도록 프런트 엔드 웹 서버 (Apache, Nginx 등)에서 미디어를 제공해야합니다. 일반적으로 MEDIA_URL 및 MEDIA_ROOT가이 용도로 사용됩니다.

    내장 된 개발 서버를 실행하면 url.py 파일에 올바른 URL을 설정해야합니다. 일반적으로 다음과 같이 사용합니다.

    from django.conf import settings
    
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
    )
    

    그러면 설정 파일에서 MEDIA_ROOT가 선택되어 개발 및 라이브 환경에서 작동합니다.

  2. ==============================

    2.바로 settings.py의 의견 ...

    바로 settings.py의 의견 ...

    MEDIA_ROOT는 /home/media/media.lawrence.com/와 같은 미디어를 저장하는 디렉토리의 절대 경로입니다.

    MEDIA_URL은 MEDIA_ROOT에서 제공된 미디어를 처리하는 URL입니다. 경로 구성 요소가있는 경우에는 후행 슬래시를 사용해야합니다 (다른 경우에는 선택 사항). 예 : 'http://media.lawrence.com', 'http://example.com/media/'

    그래서, 그것들을 reword하기 위해서 ... MEDIA_ROOT는 파일들이 당신의 시스템에 물리적으로 존재하는 곳이며, MEDIA_URL은 그 파일들이 어디에 매핑되어 있는지를 나타냅니다. 개발 중에는 항상 액세스 할 수있는 것은 아니지만 대부분의 경우 개발자 환경과 프로덕션 환경이 동일하지 않으며 돌아가서 변경할 필요가 있습니다. 다른 하나는 Django가 정적 컨텐츠를 제공하지 않도록 설계된 좋은 실행 방법이 아니라는 것입니다.

    이것을 개발에 사용하려면 DEBUG = True로 제한하는 방법을 사용하는 것이 좋습니다. DEBUG가 True로 설정되어있을 때 Django가 임시 위치에서 정적 컨텐츠를 제공하도록 지시하는 것은 개발 중에 훨씬 더 안전하고 안전한 방법입니다. DEBUG를 사용하여 사이트를 프로덕션 환경에 배치하지 않을 것입니다. 음, 적어도 그렇게해서는 안됩니다.

    여기에 그것을 구현하는 방법은 다음과 같습니다.

    settings.py:

    STATIC_DOC_ROOT = os.path.join(os.getcwd(), 'site_media')
    

    urls.py:

    from django.conf import settings
    ## debug stuff to serve static media
    if settings.DEBUG:
        urlpatterns += patterns('',
            (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
                {'document_root': settings.STATIC_DOC_ROOT}),
       )
    

    이 방법은 제가 일하고있는 모든 프로젝트는 필요한 모든 미디어가 들어있는 site_media 디렉토리가 있습니다. dev에는 자체적으로 포함되어 있으므로 DEBUG을 제외하고 설정에서 비트를 뒤집을 필요가 없습니다. DEBUG은 어쨌든하고 있습니다.

  3. ==============================

    3.Django 문서는 사용 사례를 위해 다음과 같이 수정했습니다.

    Django 문서는 사용 사례를 위해 다음과 같이 수정했습니다.

    urlpatterns = [
        # url patterns
    ]
    
    from django.conf import settings
    
    if settings.DEBUG:
        from django.conf.urls.static import static
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    ... 그리고 여기 장재 링크스랩이 있습니다.

  4. from https://stackoverflow.com/questions/2237418/serving-static-media-during-django-development-why-not-media-root by cc-by-sa and MIT license