0

Webページに複数のタブがある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 のユーザーには Secure タブが表示されないようにします。そのためのクエリをどこにどのように書くことができますか? ありがとう

4

2 に答える 2

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 %}
于 2012-08-06T13:53:37.543 に答える
0

テンプレートのパラメーターとして取得request.useruserます(を使用している場合RequestContext)。これを使用して、ベース/メニュー/ヘッダー テンプレートでタブを非表示または表示することを決定できます。

于 2012-08-06T13:28:09.783 に答える