2012-08-17 10 views

Antwort

90

Verwenden Sie den user_passes_test Dekorateur:

from django.contrib.auth.decorators import user_passes_test 

@user_passes_test(lambda u: u.is_superuser) 
def my_view(request): 
    ... 
33

Bei Personal Mitgliedschaft ausreichend ist, können Sie den @staff_member_required Dekorateur verwenden:

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

@staff_member_required 
def my_view(request): 
    ... 
+4

Ich Downvoted, da Mitarbeiter nicht die gleiche Berechtigung wie Superuser ist. –

+18

Als ich hierher kam, ist das was ich suchte, deshalb lege ich es hier hin, und ich werde es hier lassen, weil ich denke, dass es für jemand anderen nützlich sein kann. – Bit68

+2

Es ist @ Bit68. Ich suche es :) –

1

Wenn Sie eine ähnliche Funktionalität haben wollen @staff_member_required Sie können einfach Ihren eigenen Dekorateur schreiben. Nehmen wir als Beispiel @staff_member, können wir so etwas tun.

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

def superuser_required(view_func=None, redirect_field_name=REDIRECT_FIELD_NAME, 
        login_url='account_login_url'): 
    """ 
    Decorator for views that checks that the user is logged in and is a 
    superuser, redirecting to the login page if necessary. 
    """ 
    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 view_func: 
     return actual_decorator(view_func) 
    return actual_decorator 

Dieses Beispiel ist eine modifizierte staff_member_required, nur eine Überprüfung in Lambda geändert.

Verwandte Themen