2013-06-10 3 views
1

사용자가 로그인했는지 여부에 따라 URL (홈 페이지)에 다른 것을 표시하고 싶습니다. 그 경우Django, 요청에 따라보기 전환

그래서, 하지 그가 은 로그인 한 경우 내가 자신의 프로젝트를 표시 할 것이다, 그렇지 않으면, 어떤 DB 쿼리를 포함하지 않는 페이지를 표시 할 수 있습니다 인증 (이 DB 액세스를 포함한다). 내가 다른에서, 하나의 경우 DetailView를

  • 내가 특별히 클래스를 기반으로 일반 뷰를 (사용하려는 경우에만 1 개 URL 패턴, TemplateView이

    • :

      그래서

      , 나는이 작업을 수행 할 수있는 방법, 주어진).

  • 답변

    0

    일반적으로 Login Required 데코레이터를 사용하지만 하나의 URL 만 가지고 있으므로 request.user.is_authenticated()가 True인지 확인할 수 있습니다. 참이면 로그인 한 사용자에 해당하는 템플리트를 리턴하고, 그렇지 않으면 다른 템플리트를 리턴하십시오.

    클래스를 기반으로보기

    이것 좀 봐 :

    login required in TemplateView 그것은 사용자가 클래스 기반 뷰에서 인증되는 확인하기 위해 파견 방법을 사용했다. django.views에서 장고 수입 HTTP 에서

    은 경우 User.is_authenticated는(), 프로젝트에 대한 쿼리, 프로젝트를 쿼리하지하지 않을 경우 있는지 확인하기 위해 일반적인

    class AboutView(generic.TemplateView): 
        """ About page view. """ 
        template_name = 'about.html' 
    
        def dispatch(self, request, *args, **kwargs): 
         if not request.user.is_authenticated(): 
          raise http.Http404 
         return super(AboutView, self).dispatch(request, *args, **kwargs) 
    
        def get_context_data(self, **kwargs): 
         ctx = super(AboutView, self).get_context_data(**kwargs) 
         ctx['something_else'] = None # add something to ctx 
         return ctx 
    
    +0

    예, 함수 기반 뷰에서이를 수행하는 방법을 알고 있지만 클래스 기반 뷰는 어떻게해야합니까? 이 경우 과잉이라고 생각합니까? – rubik

    +0

    저에게 그렇게 보입니다. – Sid

    +0

    CLass 기반 뷰에 대한 편집을 참조하십시오.이를 수행하는 방법이 있습니다. – Sid

    1

    확인을 가져 뷰에서 프로젝트 변수가 설정되었는지 확인하십시오.