Django의 정적 파일 처리 – 개발 단계

4041 단어
전편은 Django가 배치 단계에 제공하는 정적 파일 처리 도구를 설명했고 이 편은 개발 단계를 이어서 설명한다.
개발 단계
Django에서 볼 때 정적 파일의 처리는 다른 프로그램에 맡겨야 한다.그러나 신속한 개발을 편리하게 하기 위해 Django도 개발 단계에서 정적 파일을 임시로 교체하는 도구를 제공했다.
한편, Django의 공식 문서에서'quick and dirty','grossly inefficient','insecure'등 단어로 실제 생산 환경에서 이 도구를 사용하지 말라고 여러 차례 강조했다.다른 한편, Django는 DEBUG 모드에서만 이 도구들이 작동할 수 있도록 제한한다.그래서 보조 도구로 사용하면 되고 생산 환경에서 사용하지 마세요.
또한 전편의 도구와 마찬가지로 여기에 소개된 도구도staticfiles 응용 프로그램에서 먼저 INSTALLEDAPPS에서 django. 열기contrib.staticfiles
두 가지 상황으로 나뉘어 말하자면
4
  • runserver 명령으로 로컬에서 시작하는 Django 프로그램이라면 이 보조 도구들은 자동으로 서비스를 시작합니다.즉, 모든 STATICURL 아래의 요청은 자동으로 처리되어 필요한 정적 파일을 표시합니다

  • 4
  • 만약 로컬에서 다른 서버(예를 들어 Apache)에서 Django 프로그램을 시작한다면 다음과 같은 몇 가지 방법으로 정적 파일 처리 프로그램을 열 수 있습니다

  • 4
  • URL 구성 파일에 다음과 같은 두 행을 추가합니다.
    1
    2
    3
    4
    5 from django.contrib.staticfiles.urls import staticfiles_urlpatterns                                                                                                                           # ... the rest of your URLconf goes here ...                                                                                                                           urlpatterns + = staticfiles_urlpatterns()
    자동으로 STATICURL이 적절한 STATICFILES에 일치합니다.DIRS, 응용 프로그램 디렉토리의/static 폴더입니다.(STATIC ROOT 아님)
  • 4
  • 이전 방법은 로컬 정적 파일(STATIC)에만 유효하며 사용자 업로드 파일(MEDIA)은 처리하지 않습니다.Django가 STATIC 이외의 정적 파일을 처리하도록 하려면 좀 번거롭지만,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10 from django.conf import settings                                                                                                        # ... the rest of your URLconf goes here ...                                                                                                        if settings.DEBUG:      urlpatterns + = patterns('',          url(r '^media/(?P<path>.*)$' , 'django.views.static.serve' , {              'document_root' : settings.MEDIA_ROOT,          }),     )
    사실 이전 메서드와 다른 점은 URL과 로컬 경로를 각각 수동으로 지정해야 한다는 점입니다.어떤 문장의 소개에는'django'를 쓰지 않는다.views.static.서버contrib.staticfiles.views.serve', 쓰는 방법은 약간 다르지만, 서로 엉키지 마라. 둘은 기본적으로 같다

  • 4
  • 이전 문법을 좀 더 간단하게 쓰기 위해 간단한 함수static를 사용할 수 있습니다.
    1
    2
    3
    4
    5
    6 from django.conf import settings from django.conf.urls.static import static                                                                                                   urlpatterns = patterns('',      # ... the rest of your URLconf goes here ... ) + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
    이렇게 하면 훨씬 간결할 수 있다.

  • 마지막으로 두 가지 사용 전제는 주의해야 한다. 1) DEBUG 모드에서 이 도구를 사용해야 한다.2)STATIC_URL 또는 MEDIAURL은 로컬 경로여야 하며 공백일 수도 없고 완전한 URL 형식일 수도 없습니다(예:http://static.example.com/);
    이런 용법들은 모두 뚜렷한 우열이 없으니 하나를 고르면 된다.분명히 많은 불필요한 기능들이 역사가 남긴 산물이다.
    여기까지 썼는데 또 연습 단계에서 언급한 것이 생각난다.Django는 처음에는 이렇게 복잡하지 않았을 수도 있고 많은 기능이 누추할 수도 있지만 이해하기 쉽다.지역사회가 발전함에 따라 점점 더 많은 것들이 들어와 뒤로 호환되기 위해 많은 비슷한 기능이 보존되었다.초기 사용자에게 이 프레임워크는 갈수록 유용해지지만 초보자에게는 입문이 점점 어려워지고 복잡하고 유사한 기능은 시선을 방해할 수밖에 없다.개원 프레임워크도 제품이므로 새로운 사용자와 오래된 사용자 사이의 균형을 잘 잡아야 한다.
    Django의 정적 파일 처리에 관한 것이 바로 이런 내용입니다.

    좋은 웹페이지 즐겨찾기