2014-01-15 3 views
0

회원과 게스트 템플릿을 혼합하는 가장 좋은 방법은 무엇인지 알아 내려고합니다. 주요 차이점은 페이지의 메뉴입니다. 일부 언어에서는 다른 버전의 전체 템플릿을 전환 할 수 있도록 템플릿에 접두어를 추가 할 수 있습니다. 예 : base.guest.html base.member.html는django에서 별도의 회원 및 게스트 템플릿 콘텐츠

내가이 관련된 일을 본 적이있는 유일한 방법은 내가 문서에서 발견 된이 코드는 장고에

:

if request.user.is_authenticated(): 
    # Do something for authenticated users. 
else: 
    # Do something for anonymous users. 

인가 이것은 장고에서 이것을 수행하는 기본 방법입니까? 또는 내가 놓친 다른 것이있다.

내 페이지의 대부분은 정상적으로 작동하지만 인증 된 상태를 기반으로 콘텐츠를 전환하는 더 좋은 방법이 있는지 확실하지 않습니다.

+0

else가 여러보기로 반복되는 경우 사용자가 로그인했는지 확인하기 위해 사용자 정의 미들웨어를 만들 수 있습니다. –

+0

'RequestContext'를 사용하여 템플릿을 렌더링하면 사용자 변수가 주형. 그런 다음'{% if user.is_authenticated %}'를 사용하고 템플릿에 적절한 html을 쓸 수 있습니다. – Rohan

+0

예, {% if user.is_authenticated %} 옵션을 알고 있습니다. 하지만 나는 {% extends "base.html"%}을 할 방법을 찾고 있었고 인증 된 상태에 따라 버전을 자동으로 포함하도록했습니다. – dbers

답변

1

extend이 경우에는 include이 아닙니다. base.html은 인증에 독립적이어야합니다.

{% if user.is_authenticated %} 
    {% include 'member.html' %} 
{% else %} 
    {% include 'guest.html' %} 
{% endif %} 

당신이, 당신이보기에 또한 경우 문을 가지고 있고, 이름 통과 할 수있는하려면

기본 템플릿에 템플릿으로는-포함한다. 더 많은 정보는 https://docs.djangoproject.com/en/dev/ref/templates/builtins/#include

관련 문제