views.py
# -*- coding: utf-8 -*-
# build-in models
from django.shortcuts import render_to_response
from django.contrib.auth.decorators import login_required
# Create your views here.
@login_required
def show_homepage(request):
'''
显示主页
'''
if request.user.is_staff:
# class models.User
# is_staff: Boolean. Designates whether this user can access the admin site.
# 这个“职员状态”可以在 django admin 用户管理中设置。
can_manage_user = True
else:
can_manage_user = False
values = {'can_manage_user': can_manage_user,
}
return render_to_response('index.html', values)
# build-in models
from django.shortcuts import render_to_response
from django.contrib.auth.decorators import login_required
# Create your views here.
@login_required
def show_homepage(request):
'''
显示主页
'''
if request.user.is_staff:
# class models.User
# is_staff: Boolean. Designates whether this user can access the admin site.
# 这个“职员状态”可以在 django admin 用户管理中设置。
can_manage_user = True
else:
can_manage_user = False
values = {'can_manage_user': can_manage_user,
}
return render_to_response('index.html', values)
template:
<p>
{% if can_manage_user %}
<a href="/newadmin/auth/">用户管理</a>
{% endif %}
</p>
{% if can_manage_user %}
<a href="/newadmin/auth/">用户管理</a>
{% endif %}
</p>
之所以把权限控制放在 views.py 中判断,是因为我在 template 中使用 {{perms.foo.can_vote}}的方式判断时, {{perms}} 一直是空值状态。
按照官方文档,我没有找到这个 perms 是否需要自己定义的说明。
还有一种采用函数修饰符的方式:
from django.contrib.admin.views.decorators import staff_member_required
@ staff_member_required
不过这种方式需要一个 views.py 函数来配合,并不适合这里的情况。