我在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 active选项= True。
现在我希望is_staff状态为False的用户不应该看到Secure选项卡。 如何以及在何处为此编写查询? 感谢
答案 0 :(得分:1)
另一个解决方案(涉及不修改__init__()
的参数,这可能很麻烦)是在is_staff
中定义哪些网址需要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 %}
答案 1 :(得分:0)
您在模板中获得request.user
user
参数(如果您使用的是RequestContext
)。您可以使用此选项来确定基本/菜单/标题模板以隐藏或显示标签。