2009-06-21 4 views
36

, 그것은 다음을 수행하는 것이 일반적 파일?장고 미디어 URL은 장고 템플릿에서

.someClass { 
    /* can't do this this */ 
    background: url("{{ MEDIA_URL }}/img/someImage.jpg");   
    /* either this */ 
    background: url("http://media.domain.com/img/someImage.jpg"); 
    /* or this */ 
    background: url("/django_static_media/img/someImage.jpg"); 
    /* can't do both... what to do? */ 
} 

는 나도 미디어 하위 도메인에서, 또는 오프라인으로 작업하는 동안 내 파일을 제공하고 장고 정적보기로 직접 서비스를 제공 할 수있는 능력이 필요합니다. 하지만 CSS 파일은 템플릿으로 처리되지 않고 문맥 변수 MEDIA_URL을 사용할 수 없으므로 문제가됩니다.

해결책은 무엇입니까?

편집 : 정적 미디어 파일이 실제로 별도의 미디어 하위 도메인에 있기 때문에이 문제가 발생하므로 은 상대 경로 사용을 무효화합니다. 알겠습니다. 감사합니다.

답변

45

귀하의 CSS 파일은 어디에서 제공 되나요? 예를 들어

media/ 
    images/ 
    css/ 
    js/ 

(또는 유사)이 이미지에 대한 상대 파일 경로에 대한 허용 :

background: url('../images/foo.png'); 

당신이 할 준비가되어 있지 경우 이것은 보통 일반적인 미디어 구조 등과 같은 문제가되지 않습니다 보조 CSS 파일을 사용하여 템플릿 내에서 CSS 선언을 덮어 쓸 수 있지만 다른 대안이 없을 수, 상대 파일 경로를 수용 할 수 있도록 미디어 폴더 구조를 변경할 때 오프라인 : 물론

{% if DEBUG %} 
    <link rel="stylesheet" href="{{ MEDIA_URL }}css/offline-mode.css" /> 
{% endif %} 

첫 번째 옵션은 훨씬 더 정돈 된 것입니다.

3

CSS 파일의 상대 경로 (이미지 파일 용)를 사용할 수 있습니까?

0

파일에서 템플릿 지시문을 사용하려는 경우 왜 템플릿을 통해 제공되지 않습니까?

6

죄송합니다. 답변을 좋아하지 않을 것입니다.

저도 같은 문제가 생겼어요 :

정적 게재되는 CSS 파일과 함께이 작업을 수행하는 쉬운 방법이 없습니다.

내가 할 무엇 :

  • 디버그 서버가 로컬 작업, 미디어 로컬로 제공
  • 프로덕션 서버는 아마존 S3에 어딘가에 상업 w/미디어를 호스팅
  • settings.py 파일 자동 MEDIA_URL을 (설정 DEBUG 등) 호스트 이름 확인을 통해
  • HTML 파일은 모두 {{MEDIA_URL}} (+ RequestContext 보기에 대한 컨텍스트)와 CSS 링크가 있습니다.
  • "update_s3"스크립트의 절대 경로 이름이 마음에 들었습니다. (1) 각 css 파일이 임시적으로 수정됩니다. 'url ("/ media'to 'url ("s3.mydomain.COM/미디어 '와 (2) 업데이트/업로드 아마존 S3에 대한 내/미디어 디렉토리
그때 생산에 가서 WSGI 파일에게 SVN 업데이트를 & 유효성 검사를 & 터치를 할