문제

Django 템플릿에서는 다음을 수행하는 것이 일반적입니다.

<img src="{{ MEDIA_URL }}/img/someImage.jpg">

템플릿으로 사용되지 않는 CSS 파일에서 어떻게이를 달성 하시겠습니까?

.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? */
}

미디어 하위 도메인에서 또는 오프라인 작업 중에 파일을 제공하고 Django 정적보기로 직접 제공 할 수있는 기능이 필요합니다. 그러나 CSS 파일은 템플릿으로 처리되지 않았으므로 사용할 수 없기 때문에 문제가됩니다. MEDIA_URL 컨텍스트 변수.

해결책은 무엇입니까?

편집하다: 내 정적 미디어 파일이 실제로 별도의 미디어 하위 도메인에 위치하고 있기 때문에 문제가 발생합니다. 따라서 상대 경로의 사용을 부정합니다. 고마워요!

도움이 되었습니까?

해결책

CSS 파일은 어디에서 제공됩니까? 이것은 일반적으로 다음과 같은 공통 미디어 구조로서 문제가되지 않습니다.

media/
    images/
    css/
    js/

(또는 이와 유사) 이미지에 대한 상대 파일 경로를 허용합니다.

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

상대 파일 경로를 수용하기 위해 미디어 폴더 구조를 변경할 준비가되지 않은 경우, 오프라인시 2 차 CSS 파일을 사용하여 템플릿 내에서 CSS 선언을 덮어 쓰는 것 외에는 대안이 없을 수 있습니다.

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

물론 첫 번째 옵션은 훨씬 더 깔끔합니다.

다른 팁

죄송합니다. 대답이 마음에 들지 않을 것입니다.

나는 같은 문제가 있습니다.

정적 서비스 CSS 파일로이를 수행하는 쉬운 방법은 없습니다.

내가하는 일 :

  • 디버그 서버, 로컬로 작동하고 미디어는 로컬로 제공됩니다
  • 생산 서버는 Amazon S3의 미디어와 미디어 어딘가에 호스팅됩니다.
  • settings.py 파일 자동 세트 호스트 이름 점검을 통한 Media_URL (디버그 등) (생산 대 지역/홈/디버그)
  • html 파일 모두 {{media_url}}과 함께 CSS 링크가 있습니다 (views for views+requestContext contexts)
  • 나는 절대 경로 이름을 좋아하므로 "update_s3"스크립트 :(1) 각 CSS 파일은 일시적으로 'URL ( "/media' 'to'url ("s3.mydomain.com/media '및(2) 내 /미디어 디렉토리 업데이트 /업로드 Amazon S3

그런 다음 프로덕션으로 이동하여 SVN 업데이트 및 WSGI 파일을 터치하고 유효성 검사

CSS 파일에서 상대 경로 (이미지 파일의 경우)를 사용하면 실행 가능한 옵션이 없습니까?

파일에서 템플릿 지시문을 사용하려면 템플릿을 통해 제공되지 않는 이유는 무엇입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top