Sid*_*thG 5 django django-admin django-admin-actions
is_staff=True我需要在 Django 管理界面中为用户提供一些 Django 模型。我不想为每个用户分配权限或组权限给员工用户。
我需要在类中重写哪种方法ModelAdmin,BaseModelAdmin或者还有其他更简单的方法吗?我使用的是 Django 1.4 版本
小智 6
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
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
所有 ModelAdmin 都应该继承这个类。例如:
class MyModelAdmin(StaffRequiredAdminMixin, admin.ModelAdmin):
pass
admin.site.register(MyModel, MyModelAdmin)
Run Code Online (Sandbox Code Playgroud)
请注意,此代码未经测试。
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):
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5175 次 |
| 最近记录: |