2012-02-18 4 views
4

내 장고 템플릿에 CSS를로드하는 데 문제가 있습니다.Django 템플릿에서 CSS를로드하는 방법은 무엇입니까?

나는 다음과 같은 설정이 있습니다

STATIC_ROOT = '' 
STATIC_URL = '/css/' 
STATICFILES_DIRS = ("/css") 
INSTALLED_APPS = (
    'django.contrib.staticfiles', 
) 

내가 모두 static_urlstaticfiles_dirs를 사용해야합니까를?

urls.py는

urlpatterns = patterns('', 
    (r'^$',homefun), 
) 

views.py이

def homefun(request): 
    return render_to_response('home.html') 

입니다 그리고 부모 템플릿은 CSS를로드 base.html입니다.

<link rel="stylesheet" type="text/css" href="/css/style.css" /> 
+4

저는 python/django를 처음 사용합니다. 정적 인 내용을 로딩하는 것은 PHP와 J2EE에서 매우 쉬워 보였습니다. 나는이 모든 것을 단순하게 만들었습니다. – John

+2

이것은 단지 관심사의 분리입니다. Django는 동적 컨텐츠를 제공하는 데 중점을 둡니다. 선택한 웹 서버가 정적 컨텐츠를 처리하도록합니다. 그러나 때때로 다른 장소에 설치되는 다른 앱은 정적 인 콘텐츠를 제공해야하므로이 정적 파일 앱을 만들어 도움을줍니다. – mgibsonbr

답변

8

귀하의 STATICFILES_DIRS = ("/css") 실제로해야 STATICFILES_DIRS = ("/path/to/your/css",) (후행 쉼표주의 - (eggs)이 값 eggs로 평가되므로 필요가 있지만, 콤마 힘이 조의 평가).

6

당신은과 같이, 템플릿에 변수로 {{ STATIC_URL }}를 사용해야합니다 :

<link rel="stylesheet" href="{{ STATIC_URL }}style.css"> 

Official Django documentation

정적 파일을 제공에 대한 좋은 설명이있다.

이어야합니다. 변수는 STATIC_ROOT입니다. STATICFILES_DIRS을 사용하면 기본적으로 Django가 static 내의 모든 앱 디렉토리를 검색합니다.

1

STATIC_URL은 정적 미디어 (웹 서버가 정적 미디어를 브라우저에 제공하는 요청)의 URL이며 STATICFILES_DIRS은 컴퓨터의 폴더 목록 (웹 서버가 검색 할 파일을 찾을 위치)입니다. AFAIK는 상대 경로가 아닌 절대 경로를 사용해야하므로 어쩌면 그것이 당신을 위해 작동하지 않는 이유 일 수 있습니다.

0

이 솔루션은 나를 위해 일했습니다.

코드를 python2.7에서 python3.4으로 변환 중이며 변환 후 정적 파일을 표시 할 수 없습니다.

script(src='#{STATIC_URL}js/libs/jquery-2.1.1.min.js')script(src='{{STATIC_URL}}js/libs/jquery-2.1.1.min.js')으로 변경했습니다. 이제 모든 것이 완벽하게 작동합니다.

관련 문제