从django中的设置文件设置用户权限

时间:2015-11-10 06:54:49

标签: django

我的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文件中执行此操作吗?如果不可能,我怎样才能实现我的目标?

如果需要,我会提供任何其他信息。

1 个答案:

答案 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):
    ...