2014-11-10 1 views
0

그래서 거의 동일한 URL 구조가 동일한 응용 프로그램의 두 가지 모델이 있습니다 여기장고 URL 컨퍼런스 동적 URL 충돌

urlpatterns = patterns('', 
    #.... 
    url(r'^prizes/', include(patterns('prizes.views', 
     url(r'^$', 'PrizeStore_Index', name="prizestore"), 
     url(r'^(?P<slug>[\w-]+)/$', PrizeCompanyDetailView.as_view(), name="prizecompany"), 
     url(r'^(?P<slug>[\w-]+)/$', 'PrizeType_Index', name="prizetype"), 
     url(r'^(?P<company>[\w-]+)/(?P<slug>[\w-]+)/$', 'PrizeItem_Index', name="prizepage"), 
    ))), 
    # Old Redirects 
) 

문제점 인 리뷰 및 PrizeType을. 특정 카테고리 아래에서 상품을 찾는 사용자가/prizes/prizetype로 이동하도록 URL을 구조화하고 싶습니다. 그러나 특정 회사에서 상품을보고 싶다면/prizes/companyslug /에 갈 것입니다. 그러나이 두 URL은 자연스럽게 충돌합니다. URL 구조는 항상 바꿀 수 있지만, 그렇지는 않습니다. URL 구조를 변경하지 않는 방법이 있는지 알고 싶습니다.

답변

1

입력 된 url이 회사 또는 범주에 해당하는지 확인한 다음 요청을 해당 페이지로 리디렉션하는 헬퍼보기 기능을 작성하는 것이 좋습니다.

url(r'^prizes/', include(patterns('prizes.views', 
    url(r'^$', 'PrizeStore_Index', name="prizestore"), 
    url(r'^(?P<slug>[\w-]+)/$', prizehelper, name="prizehelper), 

은 회사 또는 범주 인 경우 경우, 당신은 prizehelper 내에서 확인할 수 있습니다 따라 이동합니다.

또 다른 방법이 될 수있다, 당신의 URL 구조를 변경하고, 그것이 내가 도우미 함수의 아이디어를 좋아하지

url(r'^prizes/', include(patterns('prizes.views', 
    url(r'^$', 'PrizeStore_Index', name="prizestore"), 
    url(r'^company/(?P<slug>[\w-]+)/$', PrizeCompanyDetailView.as_view(), name="prizecompany"), 
    url(r'^category/(?P<slug>[\w-]+)/$', 'PrizeType_Index', name="prizetype"), 
+0

입니다 URL의 유형을 반영합니다. 빠른 도움을 주셔서 감사합니다. – user3084860

0

단일 유형의 urlconf 항목은 검사중인 유형을 파악한보기로 이동 한 다음 해당 유형에 적합한보기로 디스패치합니다.