2 つのユーザー レベル (スーパーユーザーと管理者) を使用してページへのアクセスを制限しようとしています。スーパーユーザーは、「is_superuser」が割り当てられた通常の Django ユーザーです。管理者ユーザーも、「is_staff」権限のみが割り当てられた通常のユーザーです。
問題は、このデコレータを管理ユーザーに使用すると、テストに合格しないことです。
@permission_required('is_staff')
def my_view(....)
@permission_required('is_staff')
匿名ユーザーの場合は false を返します。(正解)
@permission_required('is_superuser')
スーパーユーザーの場合は true のみを返します。(正解)
@permission_required('is_staff')
'is_staff' 権限が割り当てられたユーザーの場合は FALSE を返します。(間違い)
何かご意見は?
ベストアンサー1
is_staff
は権限ではないので、代わりにpermission_required
以下を使用できます:
@user_passes_test(lambda u: u.is_staff)
または
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required