사용자가 로그인했는지 여부에 따라 URL (홈 페이지)에 다른 것을 표시하고 싶습니다. 그 경우Django, 요청에 따라보기 전환
그래서, 하지 그가 가은 로그인 한 경우 내가 자신의 프로젝트를 표시 할 것이다, 그렇지 않으면, 어떤 DB 쿼리를 포함하지 않는 페이지를 표시 할 수 있습니다 인증 (이 DB 액세스를 포함한다). 내가 다른에서, 하나의 경우 DetailView를
- : 그래서
, 나는이 작업을 수행 할 수있는 방법, 주어진).
사용자가 로그인했는지 여부에 따라 URL (홈 페이지)에 다른 것을 표시하고 싶습니다. 그 경우Django, 요청에 따라보기 전환
그래서, 하지 그가 가은 로그인 한 경우 내가 자신의 프로젝트를 표시 할 것이다, 그렇지 않으면, 어떤 DB 쿼리를 포함하지 않는 페이지를 표시 할 수 있습니다 인증 (이 DB 액세스를 포함한다). 내가 다른에서, 하나의 경우 DetailView를
, 나는이 작업을 수행 할 수있는 방법, 주어진).
일반적으로 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
확인을 가져 뷰에서 프로젝트 변수가 설정되었는지 확인하십시오.
예, 함수 기반 뷰에서이를 수행하는 방법을 알고 있지만 클래스 기반 뷰는 어떻게해야합니까? 이 경우 과잉이라고 생각합니까? – rubik
저에게 그렇게 보입니다. – Sid
CLass 기반 뷰에 대한 편집을 참조하십시오.이를 수행하는 방법이 있습니다. – Sid