我正在处理发票申请,我有3个不同的角色。我有一名行政人员,财务人员和一名客户。
所有财务部分视图都受自定义财务员工权限装饰者的保护,管理和客户视图也是如此。
但是我希望django超级用户的构建能够获得所有视图的权限,但不知何故这似乎不起作用。请参阅下面的示例视图:
@method_decorator(admin_required, name='dispatch')
@method_decorator(financial_employee_required, name='dispatch')
@method_decorator(login_required, name='dispatch')
class InvoiceListView(generic.ListView):
queryset = Invoice.objects.filter(complete=False)
这些是装饰者:
def admin_required(function=None,redirect_field_name=REDIRECT_FIELD_NAME,login_url='home'):
actual_decorator = user_passes_test(
lambda u: u.is_active and u.is_superuser,
login_url=login_url,
redirect_field_name=redirect_field_name,
)
if function:
return actual_decorator
def financial_employee_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url='home'):
actual_decorator = user_passes_test(
lambda u: u.is_active and u.is_financial_employee,
login_url=login_url,
redirect_field_name=redirect_field_name,
)
if function:
return actual_decorator(function)
return actual_decorator
这根本不起作用。我只能让超级用户登录或财务员工。我究竟做错了什么?我如何通过2个不同的角色进行视图访问?因为我试图阻止让超级用户使用django管理面板。