2017-01-19 3 views
0

최신 Django 디버그 툴바 모듈이 이제는 미들웨어로 변경되었으며 명시적인 URL 설정이 필요합니다. 내 Django 프로젝트를 사용하면 항상 환경을 기반으로 설정을 유지하려고 시도하고 설정 파일과 프로젝트 전체에 if settings.DEBUG을 포함시키지 마십시오.url이 아닌 설정에서 Django URL을 덮어 쓰기/추가하기

내 설정의 레이아웃은 일반적인입니다 :

common.py (everything in here) 
development.py (dev only things here) 
production.py (prod only things here) 

이 내가 if settings.DEBUG에서 멀리 유지할 수 있도록 내가 development.py 파일의 URL을 추가 할 수 있습니다 장고 1.10의 방법입니다. 또는 새로운 버전의 디버그 도구 모음을 사용하려는 경우이 방법을 사용해야합니다.

난 그냥 당신이 당신의 URL 구성 settings.DEBUG의 값에 대한 테스트 같은 느낌하지 않는 경우 안티 패턴의 비트 아래는

if settings.DEBUG: 
    import debug_toolbar 
    urlpatterns += [ 
     url(r'^__debug__/', include(debug_toolbar.urls)), 
    ] 

답변

0

, 당신이 URL을 관리 할 수 ​​있습니다 발견 설정에 사용중인 것과 유사한 패턴입니다. 대신 urls.py 파일의

,이 구조와 urls 패키지를 것 :

# settings/local.py 
ROOT_URLCONF = 'urls.local' 
: 당신의 다른 설정에서

urls 
├── __init__.py 
├── common.py 
├── local.py 
└── production.py 

하면이 방법을 사용하는 URL의 conf 파일을 지정합니다 파일

# settings/production.py 
ROOT_URLCONF = 'urls.production' 

urls/common.py 파일을 열면 urls/local.pyurls/production.py에 가져오고 사용할 모든 구성에 공통 인 모든 URL 패턴을 포함하는 urlpattern 구성원이 표시됩니다. 예를 들어

: 당신이 내 의견을 원하는 경우,이 솔루션은 과잉 주어진 느낌

# urls/common.py 
urlpatterns = [ 
    # Put all common URL patterns here 
] 

# urls/local.py 
from .common.py import urlpatterns as common_urlpatterns 

urlpatterns = common_urlpatterns + [ 
    url(r'^__debug__/', include(debug_toolbar.urls)), 
] 

설정에 반대, URL의 구성은 환경 사이에 많은 차이가해야한다는.

+0

이상하게도, 설정을 위해 내가하고 있다고해도 처음에는 생각하지 않았습니다. DOH! 그러나 귀하의 방법은 합리적인 선택처럼 보입니다. 감사합니다 – pieterk

+0

이것은 예의 바른 해결책입니다, 감사합니다! 모듈 이름에 대한 한 가지주의 사항. 장고 1.11과 함께 파이썬 3.6을 사용하고 있는데 상대적인'ROOT_URLCONF = '{{project_name}}. urls'대신 절대 모듈 경로가 필요합니다. 그래서 설정 파일에'project_name'이 있어야합니다. 'xxx.urls.local' –