2010-07-31 5 views
4

에서 사용자 정보는 내 base.html 템플릿이 있습니다 장고 : 템플릿

{% if user.is_authenticated %} 
<p style="color:#000;"> 
    Welcome 
    {{ user.first_name }} 
    | 
    <a href="/logout/">Logout</a> 
</p> 
{% endif %} 

내가 인증하고, 해당 페이지로 이동 한 후

, 내 이름이 표시되지 않습니다. 아무도 왜 저에게 말할 수 있습니까?

"환영"도 표시되지 않습니다. 따라서 이것은 user.is_authenticated에서 실패 할 것입니다.

감사합니다. :)

+0

'Welcome'가 전혀 나타나지 않습니까, 아니면 조건을 충족하지 못합니까? –

+0

템플릿에 전달 된 컨텍스트에서 'user'변수를 덮어 쓰지 않도록하십시오. 그 외에도 실제로 로그인했는지 사용자가 first_name을 가지고 있는지 확인하십시오. – jweyrich

+0

환영 메시지도 표시되지 않습니다. –

답변

6

django.contrib.auth.context_processors.auth 미들웨어는 요청이 컨트롤러에 도달하기 전에 request.user을 설정해야합니다.

템플릿에서 액세스하려면이 변수 또는 RequestContext을 전달해야합니다. 예 :

def something(request): 
    context_instance = RequestContext(request) 
    template_name = 'your_template.html' 
    extra_context = { 'other_variable': 'some value' } 
    return render_to_response(template_name, extra_context, context_instance) 

이렇게하면 모든 요청 변수에 템플릿에서 액세스 할 수 있습니다.

+0

아주 좋습니다. 나는이 코드를 정확히 사용했다. :) –

+0

동일한 문제가 있지만 내 템플릿이 기본 템플릿이므로 방법에 따라 모든 자식 페이지 뷰에 전달해야합니다. –

+0

@MuhammadTaqiHassanBukhari : 이러한 세부 사항을 숨기는 함수를 작성할 수 있으므로'render_to_response'를 호출하는 대신이 모든 논리를 가진 함수를 호출하십시오. – jweyrich