2014-08-27 5 views
2
에서 포함 된 URL로 리디렉션

내가 내 장고 1.6 프로젝트에서이 같은 URL 설정을 말해봐 :만약 RedirectView

urlpatterns = patterns('', 
    url(r'^some-path/', include('someapp.urls')), 
    url(r'^$', RedirectView.as_view(url='some-path/', permanent=False)), 
) 

... 그러나 나는 "어떤 경로"대신에 "변경 경로"를 변경하려면, 그리고 그 과정에서 나는 여분의 장소에 하드 코드 된 것을 깨닫는다 : RedirectView 셋업!

포함 된 URL 번들로 되돌리려면 이와 같은 조치를 취할 적절한 방법이 있습니까? 모든

# NOT WORKING! Django ignores `name=` when using `include()` 
urlpatterns = patterns('', 
    url(r'^changed-path/', include('someapp.urls'), name='foo'), 
    url(r'^$', RedirectView.as_view(pattern_name='foo', permanent=False)), 
) 

답변

3

첫째, 당신은 someapp에서 urls.py 파일로 이동하여 기본 URL의 이름을 얻을 수 있습니다. 메인 URL을 파일에

# someapp/urls.py 
urlpatterns = patterns(
    'someapp.views', 
    url(r'^$', 'your view', name='foo'), 
    ... 
) 

그리고 지금,이 같은 모든 쓸 수 있습니다 : 의 가정하자이 같은 일이있어

# WORKING! Because Django likes namespaces 
urlpatterns = patterns('', 
    url(r'^changed-path/', include('someapp.urls', namespace='bar')), 
    url(r'^$', RedirectView.as_view(pattern_name='bar:foo', permanent=False)), 
) 
+0

감사합니다; 특히 네임 스페이스 예제를 고맙게 생각합니다. 불행히도 이것은 또한 내가 두려워했던 것입니다 - 내 질문에서와 같이 자신을 반복하거나 자녀의 내부 세부 사항에 부모 논리를 연결해야하는 것 사이의 나쁜 선택처럼 보입니다 (답안 에서처럼). URL을 작성할 때마다 어쨌든 앱에서 이름을 알 필요가 있기 때문에 후자의 방식이 나을 것 같습니다. – natevw