2011-09-23 6 views
1

기본 html 파일, 이미지 및 CSS 파일이 포함 된 온라인 템플릿을 다운로드했습니다. 이제 장고에서이 모든 것을 구현하고 싶습니다.django에서 css 파일에 의해 호출되는 이미지를 넣을 위치는 어디입니까?

지금까지 나는이 같은 노력하지만 좋은 결과와 함께 페이지는 CSS 파일없이 또는 이미지없이 렌더링됩니다, 또는 둘 다 ... 잘 뭔가 잘못

settings.py :

MEDIA_ROOT = rel('resources') 
MEDIA_URL = '/resources/' 

base.html : 내 이미지와 자원 폴더에 CSS 파일 및 템플릿 폴더와 그 나던 작업을 뒀다

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

도와주세요

답변

2

편집 :

내가 약간 떨어져 있었다 ... STATIC_ROOT 장고가 모든 정적 파일을 수집 할 디렉토리를 의미합니다. STATICFILES_DIRS는 정적 파일에 대한 검색 경로 목록입니다. 이 같은 :

settings.py :

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 
STATIC_ROOT = PROJECT_ROOT + 'static/' 

# URL prefix for static files. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/static/' 

# Additional locations of static files 
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    "C:/www/django/static", 
) 

# List of finder classes that know how to find static files in 
# various locations. 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

및 URL을 추가가 urls.py를 위해 :

urlpatterns += staticfiles_urlpatterns() 

ORIGINAL 답 :

이 될 수 있습니다 아주 혼란 ​​스럽네. MEDIA_ROOT 디렉토리는 파일 업로드 양식을 통해 업로드 된 파일 용입니다. 클라이언트 요청 (예 : 스타일 시트, 스크립트 및 이미지)을 통해 직접 액세스 할 수있는 실제 파일의 경우 STATIC_ROOT 및 STATIC_URL을 사용해야합니다. STATIC_ROOT는 절대적인 경로 여야합니다.

settings.py

# the url: myserver.com/static/ 
STATIC_URL = '/static/' 
# refers to this directory: 
STATIC_ROOT = '/home/user/static server files' 

의 당신이 "/ 홈/사용자/정적 서버 파일/CSS는 /"다음과 같이 그들에게 참조에 CSS를 넣어 가정 해 봅시다 :

base.html

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

파일이 렌더링 된 후 파일의 HTML 소스를 검사하고 "href"가 가리키는 내용을 확인하십시오. 어쩌면 무엇이 잘못되었는지 알 수 있습니다. – grim

0

음, 불행히도 이것은 도움이되지 못했습니다. settings.py에서 STATIC_URL/ROOT 변수를 찾을 수 없으므로 위에서 설명한대로 추가하고 base.html에 변수를 추가했지만 렌더링은 여전히 ​​CSS 파일을 찾을 수 없습니다.

내가했던 또 다른 코드는 조사 된 코드입니다. 나는 좋은 공공 응용 프로그램의 소스 코드와 검사 base.html의 조각을 가지고, 그것은 다음과 같이 말한다 :

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

다음 나는 settings.py를 확인 가서 cssRootUrl가 정의되지 않았습니다. 그래서 나는 이런 변수가 어디에서 숨길 수 있는지 전혀 모른다. ...

1

지금 개발 서버로 작업하고 있다고 가정한다.

MEDIA_URL = '에 http : // localhost를/미디어 /'장고에 대한

계산 경로 및 기타 다양한 경로 DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__)) SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) PROJECT_ROOT = os.path.dirname(__file__)

TEMPLATE_DIRS = ( os.path.join(SITE_ROOT, 'templates/'), )

MEDIA_ROOT = os.path.join(SITE_ROOT, 'templates/media/')

을위한 시작 지점으로 사용되는 사이트

위의 내용은 iot가 문제없이 해결해주었습니다.

"템플릿/미디어"에 보관됩니다 CSS 파일을 참조하는 동안은 <link href="/media/css/base/base.css" rel="stylesheet" type="text/css"></link>

희망이이 문제를 해결할 수

0

당신을 도와줍니다. 나는 당신이 사용하고있는 정적 파일들 (css, js, images)에 대해 당신의 폴더 이름을 "정적"이라고 추천한다.

  1. 파일의 첫 번째 줄에서이 -add 당신의 settings.py 및

    를 엽니 다

    수입을 os.path

    -change 당신의 STATIC_ROOT의 값 :

    STATIC_ROOT = os.path.join (PROJECT_DIR, 'static /')

    -change 당신의 STATIC_URL의 값 :

    STATIC_URL = '/ 정적 /'

  2. 프로젝트 루트에 "정적"라는 이름의 폴더를 만듭니다.

  3. css, javascript 등과 같은 정적 파일을위한 폴더를 만드십시오. 다른 유형의 파일에 대해 다른 폴더를 사용하는 것이 좋습니다.
  4. 은 수입에 프로젝트 의 urls.py -add이를 엽니 다?

    (R '(:?.? 가져 오기 설정 이 URL 패턴이를 -add? (* /) P (CSS | JQuery와 | jscripts | 이미지) /.+) $ ','django.views.static.serve ', {'DOCUMENT_ROOT 'settings.STATIC_ROOT}),

    참고 :이 예제에서는 폴더가 내 정적 폴더 안에 css, jquery, jscripts 및 images라는 이름이 붙어 있습니다.

  5. 템플릿에서이 추가 : CSS 파일에 대한

:

: 자바 스크립트에 대한

<link href="/{{ STATIC_ROOT }}css/default.css" rel="stylesheet" type="text/css" media="all" /> 

(이 예에서는이 default.css는 CSS 파일의 이름입니다)

<script type="text/javascript" src="/{{ STATIC_ROOT }}jquery/jquery.js"></script> 
관련 문제