2009-07-18 5 views
0

장고에서 세션 데이터에 의존하는 정보를 출력하고 싶습니다. "Login"/ "Logged in as Logout"부분을 예로 들어 보겠습니다. 내 request.session['user']에 따라 다릅니다.모든보기에서 공통 세션 정보 렌더링하기

물론 페이지를 렌더링 한 다음 {% if user %}으로 전환 할 때마다 사용자 개체를 컨텍스트에 넣을 수 있지만 DRY 아이디어가 깨지는 것 같습니다. 모든보기의 모든 컨텍스트에 사용자를 추가해야합니다.

어떻게 그런 조각을 추출하여 좀 더 일반적으로 만들 수 있습니까?

답변

5

template inheritance을 사용하면 컨텍스트의 공통 부분을 적절히 사용하는 공통 기본에서 모든 템플릿을 파생시키고 해당 공통 부분을 삽입 할 수 있도록 팩토리 기능으로 모든 컨텍스트를 만듭니다.

+0

에서 더 많은 정보를보기 -이 솔루션은 너무 작동합니다 : D에게 – viraptor

+0

@viraptor을, 기쁜이를 듣고 - 내가 마법이 일반적으로 더 나은 때 피할 생각 단순함에 중점을두고 뭔가를 달성 할 수 있습니다! –

0

로그온했을 때 사이트의 특정 영역에만 액세스 할 수있게하려고합니까? 또는 특정 페이지의 특정 영역?

전체 URL에 대한 액세스를 차단하려면보기에서 함수에서 @login_required 데코레이터를 사용하여 특정 액세스를 차단할 수 있습니다. 또한 include를 사용하면 별도의 html로 사용자 로그인을 요구하는 사이트의 공통 부분을 유지할 수 있습니다. 즉, if 문을 한 번만 쓰는 것입니다.

0

로직을 포함하는 컨텍스트 프로세서를 사용하여 각 호출에 추가하지 않고도 모든 페이지에서 사용할 수있는 변수에 배치 할 수 있습니다.

내가 실제로 헤이하지만 ... 전망에 대한 몇 가지 장식 마법을 기대하고 있었다 How to pass common dictionary data to every page in django

관련 문제