2012-08-06 45 views
0

我有一個在Django的書面意見,我在網頁上有多個選項卡。其中一些我想讓那些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

這是什麼類?爲什麼是一堂課?它在哪裏使用? – 2012-08-06 12:47:47

+0

這個類用於傳入基本模板哪個選項卡處於活動狀態 – Karan 2012-08-06 12:50:48

+0

這不能回答我的問題。 *您如何*將它傳遞到基本模板中? – 2012-08-06 12:53:16

回答

1

另一種解決方案(包括不修改參數__init__(),這可能是麻煩)是定義哪些URL需要is_staffTOP_NAVIGATION_BAR,像這樣:

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

現在,你可以開展檢查本身模板(假設您的導航菜單在模板中顯示爲nav_menu上下文變量):

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

你得到模板request.useruser參數(如果你使用RequestContext)。您可以使用此選項來決定您的基本/菜單/標題模板以隱藏或顯示選項卡。