2013-07-23 6 views
0

내 URL 정규 표현식 지금은 admin/static/admin/css/base.css 또는 admin/123/static/admin/js/actions.js을 일치시킬 수 있습니다, r'^admin.*/static/admin/(?P<path>.*)$',하지만 난 정규 표현식

내가 어떻게 할 수

(지금은 일치하지 않음)가 admin/blog/post/static/static/admin/js/actions.js 같은 URL과 일치합니다?

모두에게 감사드립니다.

내 문제는 내가이 url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT,}), settings.STATIC_ROOT처럼, 내 CSS/JS 파일을 os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static')

입니다 저장하는 장고 정적 URL 경로를 설정하지만 관리 인터페이스에 액세스 할 때, 모든 CSS/JS 파일이없는 것입니다 . django\contrib\admin\static\admin에있는 admin css 파일 저장소와 html 파일의 url이 'static/admin/css/base.css'이기 때문입니다. 설정에서 지정한 고정 경로에이 파일이 없습니다.

내 해결책은 r'^admin.*/static/admin/(?P<path>.*)$'과 같은 다른 URL로 설정하고 문서 루트를 django admin 정적 파일 경로로 설정합니다. 하지만 내가 언급 한 것처럼 관리자 메인 페이지로 가면 모든 것이 괜찮습니다. "사용자 추가"페이지처럼 깊숙이 들어가면 CSS 파일이 여전히 누락되었습니다.

나는 또한 해결책이 나의 주소를 r'.*/static/admin/(?P<path>.*)$'에 정기적으로 바꾼다는 것을 발견했다. 그것은 모든 것이 좋지만, 더 좋은 해결책이 있는가?

내 정적 경로에서 collectstatic을 실행 한 후 admin 폴더와 해당 CSS/js 파일을 찾을 수 있습니다. 그런 다음 url (r '^ admin/static/(? P. *) $', 'django.views.static.serve', { 'document_root' : settings.STATIC_ROOT})로 url 경로를 설정하고, 기본 관리자 페이지에서 작동하지만, 내가 액세스 할 때 http://localhost/admin/sites/site/static/static/admin/js/admin/RelatedObje‌​ctLookups.js 여전히 작동하지 않습니다. 어떻게하면 내 URL 경로를 쓸 수 있습니까?

+2

해결하려는 문제는 무엇입니까? –

+1

정적 템플릿을 웹 템플릿에 삽입하는 이유는 무엇입니까? –

+0

내가 왜 일치하지 않을지 모르겠다. 나는 그저 슬래시를 벗어나 캡처 그룹의 이름을 제거했다. http://www.rubular.com/r/DlxE1mejvL에 나와있다. –

답변

0

패턴이 잘 일치 :

>>> import re 
>>> p = re.compile(r'^admin.*/static/admin/(?P<path>.*)$') 
>>> p.match("admin/blog/post/static/static/admin/js/actions.js").groups() 
('js/actions.js',) 

당신을 위해 작동하지 않았다 왜 그렇게 명확하지 않다. 문제가있는 URL이 다른 정규 정규식과 일치하지 않는다고 다시 확인 했습니까?

편집 : 위의 업데이트를 기반으로 STATIC_URL이 제대로 설정되지 않았을 수 있습니다 (빈 문자열, 아마도?). 정적 파일이 제공되는 곳 (디렉토리가 아닌 URL)을 가리켜 야하며 슬래시로 끝나야합니다. Settings: STATIC_URL을 참조하십시오.

(각주로 URL 정규 표현식을 너무 많이 사용하면주의해야합니다. 아직이 문서에는 없지만 위키 피 디아의 ReDoS 문서는 읽기 전에 읽는 것이 좋습니다. 여기를 참조하십시오.)