2011-02-16 3 views
53

장고 1.3으로 옮겨 가면서 미디어와 정적 파일의 분리가 다소 혼란 스럽습니다. 여기에 기본 settings.py이 같은 모습입니다 :Django의 정적 파일과 미디어 파일의 차이점은 무엇입니까?

# Absolute filesystem path to the directory that will hold user-uploaded files. 
# Example: "/home/media/media.lawrence.com/media/" 
MEDIA_ROOT = '' 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash if there is a path component (optional in other cases). 
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" 
MEDIA_URL = '' 

# Absolute path to the directory that holds static files. 
# Example: "/home/media/media.lawrence.com/static/" 
STATIC_ROOT = '' 

# URL that handles the static files served from STATIC_ROOT. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/static/' 

나는 MEDIA_ROOTSTATIC_ROOT에 무엇을해야합니까? 그것들은 별도의 디렉토리 여야 하는가? 그 차이점은 무엇입니까?

+0

이 게시물을 참조하십시오. https://groups.google.com/forum/#!topic/django-users/tSb4EC0G040 – laike9m

답변

49

정적 파일은 javascript/images 등을위한 것이지만 미디어 파일은 사용자가 업로드 한 콘텐츠 용입니다.

+0

미디어에 앱을 저장하는 앱은 어떻게 될까요? 예를 들어 contrib.admin입니다. 이제는 내 프로젝트 미디어 폴더 또는 정적 폴더에 심볼릭 링크해야합니까? 왜냐하면 당신의 답변에 따르면 그 파일들은 이제 정적으로 속해 있기 때문입니다. – darren

+0

@mongoose_za - 이제 관리 응용 프로그램에 정적 폴더가있어 더 이상 미디어를 사용하지 않습니다. 정적 파일 앱을 사용하는 경우 더 이상 admin의 미디어 파일을 심볼릭 링크 할 필요가 없습니다. –

29

Uku Loskit이 말했듯이 정적 파일은 응용 프로그램의 CSS 파일, 자바 스크립트 파일, 이미지 등을위한 것입니다. 미디어 파일은 일반적으로 사용자 또는 관리자가 업로드 할 수있는 파일입니다.

일반적으로 MEDIA_ROOTSTATIC_ROOT은 별도의 디렉토리가되어야합니다. STATIC_ROOT은 관리 명령 collectstatic이 찾은 모든 정적 파일을 저장하는 곳입니다. 그런 다음 프로덕션에서는 STATIC_URL으로 시작하는 요청이 주어지면 STATIC_ROOT의 파일을 제공하도록 웹 서버를 구성합니다. Django devserver를 개발 용으로 사용하고 있으면 자동으로 정적 파일을 제공합니다.

정적 파일 응용 프로그램은 사용자가 업로드 한 미디어를 응용 프로그램 미디어에서 분리하여 배포, 백업 및 버전 제어를 쉽게 만듭니다. staticfiles 앱 이전에는 개발자가 미디어 파일을 정적 애플리케이션 애셋과 혼합하는 것이 일반적이었습니다.

staticfiles에 대한 1.3 문서는 꾸준히 개선되고 있습니다. 자세한 내용은 how-to을 참조하십시오.

관련 문제