2011-12-29 4 views
4

사용자가 로그인하지 않은 경우 "로그인"과 "등록"을 표시하는 탐색 모음이 있습니다. 사용자가 로그인하면 탐색 모음에 사용자 이름과 그가받은 편지함에있는 메시지여러보기에 대한 사용자 통계 포함

문제는 탐색 페이지가 약 50 페이지에 있기 때문에 사용자 정보를 가져 와서 템플릿으로 보내야하는 약 50 개의보기 기능이 있다는 것입니다. 나중에 이것을 변경하려면 고통이 될 것입니다!

{% if user %} 
... 
{% else %} 
.... 
{% endif %} 
: 내 탐색 모음 코드를 포함하고 있기 때문에

def index(request): 
    user = request.user 
    ... 
    return render_to_response("page.html", {'user': user}) 

내가 탐색 모음에있는 페이지로 사용자에 대해 때마다 정보를 보낼 수 있습니다

예를 들어

, 여기의 예이다

더 깨끗한 방법이 있나요?

편집 : 또한 템플릿에 보낼 UserProfile 모델이 있습니다. 이것도 할 수있는 방법이 있습니까?

+0

당신은 템플릿 렌더러에 RequestContext를 전달해야합니다 : 귀하의 의견에

, 당신은 단순히 필요한 RequestContext 인스턴스를 생성 담당하게 될 것 render 바로 가기를 사용할 수 있습니다 컨텍스트 프로세서와 request.user가 템플릿 컨텍스트에 있다는 사실을 확인하십시오. –

답변

2

가장 간단한 방법은 settings.py에서 을 TEMPLATE_CONTEXT_PROCESSORS 구성에 포함시키는 것입니다. in the docs에 설명 된대로 userperms 변수를 템플릿 컨텍스트에 추가하면 현재 사용자에게 직접 액세스 할 수 있습니다.

하지 TEMPLATE_CONTEXT_PROCESSORS의 기본 구성은이 (장고 1.3)입니다 : 당신이 그것을 반환하지 않고 템플릿에 user 변수에 액세스 할 수 있어야합니다

("django.contrib.auth.context_processors.auth", 
"django.core.context_processors.debug", 
"django.core.context_processors.i18n", 
"django.core.context_processors.media", 
"django.core.context_processors.static", 
"django.contrib.messages.context_processors.messages") 

그래서 상황에 맞는 프로세서가 이미 있어야합니다 활성 싶게은 보기에서. 당신이 활용할 수 있도록

from django.shortcuts import render 

def my_view(request): 
    return render(request, 'template.html') 
+1

템플릿을 렌더링하려면 RequestContext를 사용하거나 내부적으로 하나를 사용하는 'render'단축키를 사용해야한다는 것을 기억하십시오. –

+0

hin @DanielRoseman에게 감사드립니다. 답변을 업데이트했습니다. –

+0

안녕하세요, 사용자 모델 외에도 UserProfile 모델에 액세스 할 수 있습니까? – egidra

2

DrTyrsa가 제안한대로 사용자 지정 템플릿 태그를 만들거나 을 만들 수 있습니다. 당신은 모든보기에 사용자를 보내야하는 이유

+0

이 작업에 대한 컨텍스트 프로세서의 예를 보여줄 수 있습니까? 컨텍스트에 무엇을 추가해야합니까? 로그인 양식? 등록 링크? 통계 (사용자가 로그인하지 않은 경우 추가 할 항목)? – DrTyrsa

+0

프로세서는 템플릿에서 사용되는 컨텍스트에 데이터를 추가하기 만하면됩니다. –

+0

@ThomasOrozco 좋아, 구현을 볼 수 있습니까? 제 관점은 컨텍스트 프로세서가 단지 컨텍스트에 객체를 추가해야한다는 것입니다.추가 할 객체를 결정할 때, 추가 할 객체를 결정할 때와 같은 모든 논리는 태그에 배치해야하며 훨씬 더 명확하고 "이 객체가 내게이 객체를 주었던 것"과 같은 질문을 제기하지 않습니다. – DrTyrsa

0

, HttpRequest가 사용자를 포함, 당신이 로그인 할 때 쉽게. 템플릿에

를 액세스 할 수 있습니다 다른 솔루션입니다, sessions에 사용자를 저장하고 액세스합니다 모든보기 또는 템플리트에서.