2012-08-06 1 views
0

나는 웹 페이지에 하나 이상의 탭이있는 장고에서 서면 의견이 있습니다. 그들 중 일부는 is_staff 상태가 False 인 사용자에게는 보이지 않게하고 싶습니다. 다음은 코드입니다사용자 별보기를 작성하는 방법은 무엇입니까?

TOP_NAVIGATION_BAR = [ {'name':'home', 'href':'/my_app/home',active:False}, 
          {'name':'Content', 'href':'/my_app/content',active:False}, 
          {'name':'Secure', 'href':'/my_app/Secure',active:False}, 
         ] 

    class topnavigationbar: 
     tab = TOP_NAVIGATION_BAR 
     def set_active_tab(self, tab_name): 
      for tab in self.tabs: 
       if tab['name'] == tab_name: 
        tab['active'] = True; 
       else: 
        tab['active'] = False; 

     def __init__(self, active_tab): 
      self.set_active_tab(active_tab) 

모든보기마다 top_navigation_bar 활성 옵션 = True로 설정했습니다.

이제 is_staff 상태가 False 인 사용자에게는 보안 탭이 표시되지 않아야합니다. 어떻게 쿼리를 작성할 수 있습니까? 감사합니다

+1

이 클래스는 무엇입니까 : 템플릿 (탐색 메뉴 가정은 nav_menu 컨텍스트 변수로 템플릿에 표시)? 왜 그것이 수업입니까? 사용 장소는 어디입니까? –

+0

이 클래스는 활성화 된 탭이 기본 템플릿으로 전달되는 데 사용됩니다. – Karan

+0

내 질문에는 대답하지 않습니다. * How * "기본 템플릿으로 전달하는 방법"은 무엇입니까? –

답변

1

또 다른 해결책이 URL은 다음과 같이 is_staffTOP_NAVIGATION_BAR이 필요한 정의하는 것입니다 : 이제

TOP_NAVIGATION_BAR = [ 
    {{'name': 'Secure', 'href': '/my_app/Secure', active: False, secure: True}, 
    ... 
] 

, 당신은 검사 자체를 수행 할 수 있습니다

{% for menu_item in top_menu %} 
{% if not menu_item.secure or request.user.is_staff %} 
    <a href='{{ menu_item.href }}' ... 
{% endif %} 
{% endfor %} 
0

RequestContext을 사용하는 경우 템플릿에 매개 변수가 request.user이됩니다. 탭을 숨기거나 표시하기 위해 기본/메뉴/헤더 템플릿에서 결정할 때 사용할 수 있습니다. (귀찮은 일 수있는, __init__()에 인수를 수정하지 포함)