102

ユーザーがスーパーユーザーかどうかもテストする @login_required に似たdjangoのデコレータはありますか?

ありがとう

4

7 に答える 7

173

user_passes_testデコレータを使用します。

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u: u.is_superuser)
def my_view(request):
    ...
于 2012-08-17T10:09:56.930 に答える
87

スタッフ メンバーシップが十分であり、ユーザーがスーパーユーザーであるかどうかを確認する必要がない場合は、@staff_member_requiredデコレータを使用できます。

from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required
def my_view(request):
    ...
于 2015-11-05T22:22:08.727 に答える
2

ユーザーのプロファイルがある場合は、これを簡単に行うことができます

@login_required
@user_passes_test(lambda u: True if u.profile.role==2 else False )
def add_listing(request):
    #...
于 2020-03-14T14:38:33.257 に答える
1

新しいコードを書かずにクラスベースのビューでスーパーユーザーを要求するには:

from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import user_passes_test

@method_decorator(user_passes_test(lambda u: u.is_superuser), name='dispatch')
class AdminCreateUserView(LoginRequiredMixin, FormView):
    ...
    ...
    ...
于 2020-06-02T18:22:22.573 に答える