2011-02-18 2 views
4

이것은 매우 간단해야하지만 어떻게 든 그것이 나를 아침 내내 붙잡 았습니다. 나는 장고 디버그 서버를 사용하여 로컬 개발이 filestructure에있어 다음 settings.py MEDIA_ROOT에서Django 정적 파일 - 로컬 개발시 - 절대적으로 제공하는 방법?

/project/ (django project) 
/static/ (static files) 

및 MEDIA_URL으로 설정되어 '/ 정적 /'나는 내 URL을이를 사용하고 있습니다 내 템플릿에서

url(r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root': '../static'}), 

을 평, 정적 디렉토리 서버를 할 필요가있는 파일은 다음과 같은 구성됩니다

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

그 예상대로 모든 작품 - 자바 스크립트/CSS/이미지는 모두 Hompage에서 제대로 봉사했다. 그러나, 하위 디렉토리로 가면 http://127.0.0.1:8000/news/과 같이 모든 링크가 깨집니다.

다양한 os.import 옵션을 사용하여 상대 링크를 적절하게 만들려고 시도했지만 havent에는 행운이있었습니다. 기본 URL에 상대적으로 강제 할 수있는 방법이 있습니까, 아니면 내 파일 시스템에 하드 코딩 할 수 있습니까?

도움이 될 것입니다!

+0

settings.py에서 미디어 디렉토리로 무엇을 설정 했습니까? – neolaser

+0

전체 * urls.py를 볼 수 있습니까? – SingleNegationElimination

답변

0

하위 디렉토리로 이동할 때 링크가 어떻게 깨지나요? 좀 더 설명해 주시겠습니까?

django 1.3은 정적 미디어에 대해 이상한 상대 URL 라우팅을 지원합니까?

홈페이지에서 제공 할 수 있지만 다른 곳에서 제공 할 수없는 경우 정확히 STATIC_URL과 비슷한 소리가 아닌지 확인하십시오.

STATIC_URL은 무엇인가요? 그것은 절대적이어야하며 슬래시로 시작해야합니다.

+0

STATIC_URL = '/ 정적 /'입니다. 문제는 정적 경로가 항상 현재 위치에 상대적으로 제공된다는 것입니다. 따라서 하위 디렉토리가 작동하지 않는 이유는 무엇입니까? 그래서/news에서 파일은 ../static에서 올 때 ../static에서 제공 될 것으로 예상됩니다. – philipbe

+0

생성 된 실제 URL은 무엇입니까? STATIC_URL은 새로운 마법의 장고 1.3입니다. 설정에서 정적 변수 인 경우 템플리트에서 템플릿을 넣어도 브라우저는/static/foobar를/static/foobar로 보냅니다. 너무 혼란스러워! –

+0

안녕하세요, 고맙습니다. 지금 생각합니다. {{STATIC_URL}} 대신/static /을 통해 등산용 물건으로 돌아 왔습니다. – philipbe

1

urls.py 파일의이 줄에서 '../static'은 절대 디렉토리로 변경해야합니다. 그것을 바꿔보고 무슨 일이 일어나는 지보십시오.

파일 :

url(r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/full/path/to/static'}),

당신에게 예를 위해, 나의 조금 다르게 설정되어 있지만 난 여전히 전체를 사용

url(r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root': '../static'}),

같이 더보고해야 통로.

여기에 나의 설정입니다 방법은 다음과 같습니다

STATIC_DOC_ROOT = '/Users/kylewpppd/Projects/Django/kl2011/assets/' 

settings.pyurls.py에 :

(r'^assets/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_DOC_ROOT, 'show_indexes':True}), 

내가 'localhost:8000/assets/'에서 내 정적 파일을 제공하고 있습니다.

1

방금 ​​같은 문제가있어서 위의 첫 번째 슬래시을 'STATIC_URL ='/ static/'에서 제거하고 philipbe가 쓴 것처럼 STATIC_URL ='static/'으로 해결했습니다. Wierd thing은 '/ media /'가 동시에 'MEDIA_URL'에 잘 작동한다는 것입니다 ('media /'는 레이아웃을 어기는 반면).

어쨌든 STATIC_URL을 선행 슬래시가없는 '정적 /'으로 변경하면 문제가 해결됩니다.

관련 문제