2012-08-17 207 views

回答

90

使用user_passes_test裝飾:如果你想有類似的功能

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

@staff_member_required 
def my_view(request): 
    ... 
33

在消協工作人員的成員就足夠了,你可以使用@staff_member_required裝飾@staff_member_required你可以輕鬆地編寫你自己的裝飾器。以@staff_member爲例,我們可以這樣做。

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 

這個例子是改性staff_member_required,只是改變在lambda一張支票。

+4

我降低了工作量,因爲工作人員與超級用戶的權限不一樣。 – 2015-11-10 22:17:00

+18

當我來到這裏時,這就是我正在尋找的東西,這就是爲什麼我把它放在這裏的原因,我會把它留在這裏,因爲我認爲它可以對其他人有用。 – Bit68 2015-11-11 20:53:56

+2

它是@ Bit68。我在找:) – 2017-06-12 05:47:23

1

from django.contrib.auth.decorators import user_passes_test 

@user_passes_test(lambda u: u.is_superuser) 
def my_view(request): 
    ... 
相關問題