我的settings.py
文件中有以下菜单:
ADMIN_MENU = [
{
'name': 'Users',
'models': [
'User',
'Message',
'Payment',
],
'icon': 'icon-user'
},
{
'name': 'Inventory',
'models': [
'Country',
'Server',
'Package',
'blog.post'
],
'icon':'icon-user'
},
{
'name': 'Blog',
'models': [
'Post',
],
'icon':'icon-user'
},
{
'name': 'Reports',
'models': [
('Users', '/console/reports/users'),
('Usage', '/console/reports/usage'),
],
'icon':'icon-user'
}
]
现在,我想做的是:
- 如果用户超级用户让他看到整个菜单
- 如果用户部分内容(is_staff
),则允许他仅查看Reports
部分。
我可以直接从我的settings.py
文件中执行此操作吗?如果不可能,我怎样才能实现我的目标?
如果需要,我会提供任何其他信息。
答案 0 :(得分:0)
这不可能来自设置文件(不是我知道的任何方式)。
您可以在菜单模板中轻松解决此问题。在我的情况下,我只希望超级用户能够看到管理仪表板链接。
{% if request.user.is_superuser %}
<a href="{% url 'admin:index' %}">Admin dashboard</a>
{% endif %}
除非您希望他们有权访问is_staff
Admin dashboard
有多种选项可以限制用户访问网址本身。 https://docs.djangoproject.com/en/1.8/topics/auth/default/#topic-authorization
简单示例是使用permission_required
装饰器
from django.contrib.auth.decorators import permission_required
@permission_required('polls.can_vote')
def my_view(request):
...