2012-08-17 10 views
42

क्या dlogango में @login_required के समान एक सजावट है जो उपयोगकर्ता को सुपरसियर होने पर भी परीक्षण करता है?django @login_required सजावट एक सुपरसुर

from django.contrib.auth.decorators import user_passes_test 

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

उत्तर

90

user_passes_test डेकोरेटर का प्रयोग करें @staff_member_required आप आसानी से अपना खुद का सजावटी लिख सकते हैं। एक उदाहरण के रूप में @staff_member लेना हम इस तरह sth कर सकते हैं।

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 

यह उदाहरण एक संशोधित कर्मचारी_मेम्बर_रेक्वायर है, बस लैम्ब्डा में एक चेक बदल गया है।

33

मामले में कर्मचारियों सदस्यता के लिए पर्याप्त है, तो आप @staff_member_required डेकोरेटर का उपयोग कर सकते हैं::

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

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

मैंने डाउनवॉट किया क्योंकि कर्मचारी सदस्य सुपरसियर के समान अनुमति नहीं है। –

+18

जब मैं यहां आया था, यही वह था जिसे मैं ढूंढ रहा था, इसलिए मैंने इसे यहां रखा, और मैं इसे यहां छोड़ दूंगा क्योंकि मुझे लगता है कि यह किसी और के लिए उपयोगी हो सकता है। – Bit68

+2

यह @ बिट 68 है। मैं इसे ढूंढ रहा हूँ :) –

1

आप के लिए इसी तरह की सुविधा चाहते हैं

धन्यवाद

संबंधित मुद्दे