Django is_staff パーミッションデコレータ 質問する

Django is_staff パーミッションデコレータ 質問する

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

おすすめ記事