2013-10-01 2 views
1

장고에서 두 모델에 대해 하나의 URL 패턴을 사용할 수 있습니까? 게임 및 범주와 나는이 두 가지에 대한 하나 개의 URL 패턴을 원하는 :장고의 두 모델에 대한 하나의 URL 패턴

나는 두 가지 모델이 슬러그이없는 경우

ios-games/category_name 

ios-games/game_name 

그래서 카테고리 패턴이 먼저 가서해야을 , 그것은 게임 패턴을 확인해야합니다.

두 모델 모두 큰보기를 만들지 않고도 할 수 있습니까? 그것은 더보고 가지 않을 것이다 첫 번째 패턴에서 개체를 찾을 수없는 경우

불행하게도, url.py에서 경로의 순서는 방법이 내가 생각하지 않는다

답변

2

... 작동하지 않습니다 당신이보기에서 URL을 통해 계속보고 싶다고 말할 수 있습니다. 그러나 올바른보기를 호출하는보기를 만들 수 있습니다. 전에 이런 짓을 했어. 예 :

class GameCategoryFactory(View): 
    def dispatch(self, request, *args, **kwargs): 
     game_or_category_slug = kwargs.pop('slug') 

     if Category.objects.filter(name=game_or_category_slug).count() != 0: 
      return CategoryView.as_view()(request, *args, **kwargs) 
     elif Game.objects.filter(name=game_or_category_slug).count() != 0: 
      return GameView.as_view()(request, *args, **kwargs) 
     else: 
      raise Http404 

물론 클래스 기반보기를 사용하고 있습니다. 함수 기반 접근법은 꽤 간단해야합니다.

+0

힌트를 보내 주셔서 감사합니다. 약간 다른 로직을 사용했지만, dispatch() 메소드를 오버라이드 (override)하는 아이디어가 도움이되었습니다. – Timus83

관련 문제