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 的用户不可见。我如何以及在哪里可以为此编写查询?谢谢

4

2 回答 2

1

另一种解决方案(涉及不修改 的参数__init__(),这可能很麻烦)是定义哪些 URL 需要is_staffin TOP_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.user参数user(如果您使用的是RequestContext)。您可以使用它来决定在您的基本/菜单/标题模板中隐藏或显示选项卡。

于 2012-08-06T13:28:09.783 回答