我需要is_staff=True
在 Django 管理界面中为用户提供一些 Django 模型。我不想为每个用户分配权限或组权限给员工用户。
我需要在ModelAdmin
或BaseModelAdmin
类中覆盖哪种方法,或者还有其他更简单的方法吗?我正在使用 Django 1.4 版本
我需要is_staff=True
在 Django 管理界面中为用户提供一些 Django 模型。我不想为每个用户分配权限或组权限给员工用户。
我需要在ModelAdmin
或BaseModelAdmin
类中覆盖哪种方法,或者还有其他更简单的方法吗?我正在使用 Django 1.4 版本
class TeacherAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return True
def has_change_permission(self, request, obj=None):
return True
def has_module_permission(self, request):
return True
has_module_permission 检查模型是否可以在应用标签表中列出
像这样的东西应该工作:
class StaffRequiredAdminMixin(object):
def check_perm(self, user_obj):
if not user_obj.is_active or user_obj.is_anonymous():
return False
if user_obj.is_superuser or user_obj.is_staff:
return True
return False
def has_add_permission(self, request):
return self.check_perm(request.user)
def has_change_permission(self, request, obj=None):
return self.check_perm(request.user)
def has_delete_permission(self, request, obj=None):
return self.check_perm(request.user)
并且所有 ModelAdmin(s) 都应该继承这个类。例如:
class MyModelAdmin(StaffRequiredAdminMixin, admin.ModelAdmin):
pass
admin.site.register(MyModel, MyModelAdmin)
请注意,此代码未经测试。
staff_member_required 装饰器
staff_member_required(redirect_field_name='next', login_url='admin:login') [来源]
此装饰器用于需要授权的管理视图。使用此函数装饰的视图将具有以下行为:
如果用户已登录,是工作人员 (User.is_staff=True),并且处于活动状态 (User.is_active=True),则正常执行视图。
否则,请求将被重定向到 login_url 参数指定的 URL,原始请求的路径在 redirect_field_name 指定的查询字符串变量中。例如:/admin/login/?next=/admin/polls/question/3/。
示例用法:
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def my_view(request):
...