2014-01-30 2 views
0

두 개의 클래스 기반보기를 "범주"와 "제품"이라고합니다.동일한 URL 패턴, 두 가지 다른보기?

내가 달성하려고하는 것은 사실 아주 간단합니다.
"Category"에는 다음과 같은 url을 치는 것을 의미하는 url ("food"라고 부르겠습니다)이 들어 있습니다. mydjango.com/myapp/food/
"food"와 일치하는 "Category"객체가 있는지 실제로 검색합니다 ". 이제
url(r'^(?P<rel_url>.+)/$', login_required(is_allowed(Category.as_view())), name='category')

의 난 ("제품"모델) 제품에 액세스하고 싶은 말은하자 URL로 분류 matchin "음식"에 포함되어 있습니다 :
URL 패턴이 같은 것입니다. 예 :
mydjango.com/myapp/food/rice 제품 모델의 URL 필드는 다음과 같습니다. "food/rice" 그런 다음 내 URL 패턴은보기 이름을 제외하고는 위와 똑같습니다.
문제는 django가 첫 번째 URL 만 확인하고 'food/rice'URL이 포함 된 Category 객체가 없다는 것을 알려줍니다. 그 URL은 제품 모델에 저장되기 때문에 어떤 의미가 있습니다.

간단한 질문 : 일치하는 패턴에 따라 두 가지보기를 어떻게 액세스 할 수 있습니까? mydjango.com/myapp/food은 카테고리보기 (rel_url 사용)를 사용해야합니다.
mydjango.com/myapp/food/rice은 카테고리와 일치하지 않으며 제품보기를 사용합니다. 나는 이것이 좋은 방법이 아니다 알고 그런데

, 그러나 이것은 내가 찾은 유일한 솔루션은

답변

1

당신은에 따라 차별화해야합니다 (응용 프로그램은 카테고리/제품보다 훨씬 훨씬 더 복잡하다) url 패턴을 작성한 다음 urls.py에서 더 구체적인 패턴을 먼저 이동하십시오. 일치시킬 첫 번째 패턴이 사용됩니다. 같은 당신을 이끌 것입니다

: "제품"모델에서

url(r'^(?P<cat>[^/]+)/(?P<prod>[^/]+)/$', Product.as_view(), name='product') 
url(r'^(?P<cat>.+)/$', Category.as_view(), name='category') 
+0

는 url은 전체 URL입니다. 따라서 데이터베이스에 액세스하기 전에 그것이 제품인지 또는 카테고리인지 구분할 수 없습니다. – Depado

+0

당신이 옳았 어. 고마워, 너 천재 야. '-' – Depado

관련 문제