2014-03-13 13 views
0

URL이 www.example.com/<username>이고 정규 및 프리미엄의 두 가지 유형이 있다고 가정합니다. 이 두 개의 다른 사용자 홈 페이지를 생성하기 위해 두 가지 다른보기를 사용하고 싶습니다. 이를 위해 어떻게 대응 파일 urls.pyviews.py을 작성해야합니까? 그건 그렇고, 두 개의 서로 다른 전망을 설정하고 모두 클래스 기반의보기입니다, 난 그냥 사용자 유형을 기반 으로이 스위치를 어떻게 해야할지 모르겠다.사용자 유형에 따라 django에서 다른 클래스 뷰를 탐색하는 방법은 무엇입니까?

+0

사용자 유형을 데이터베이스에 저장합니까? 그렇다면 간단한 if 문만의 문제라고 말할 수 있습니다 ... – Dunno

답변

2

올바른보기를 "디스패치"하는 가운데보기를 가질 수 있습니다. 그런 식으로, 당신은 여전히 ​​하나의 URL을 가질 수 있습니다. 이보기에 하나의 URL 만 지정하면됩니다.

class HomePageDispatchView(View): 
    def dispatch(self, request, *args, **kwargs): 
     if request.user.type == PREMIUM: 
      return PremiumHomePage.as_view()(request, *args, **kwargs) 
     else: 
      return RegularHomePage.as_view()(request, *args, **kwargs) 
+0

이것은 실제로 내 대답과 매우 유사합니다 : http://stackoverflow.com/a/19119131/2761986. 나는이 패턴을 아주 자주 사용한다. 코드를 별도로 보관할 수 있지만 동일한 URL을 사용합니다. – jproffitt

+0

'__init __()는 정확히 1 개의 인수를가집니다. (3 개)'이 오류 메시지가 있습니다. ( – chaonextdoor

+0

어디에서 오류가 발생 했습니까? 무엇에 __init__을? – jproffitt

관련 문제