2015-01-28 13 views

उत्तर

6

हालांकि इस मामले में शायद कोई समस्या नहीं होगी, इससे कोई फर्क नहीं पड़ता कि आप ऑर्डर करने के लिए login_required चाहते हैं ताकि आप पहले से निष्पादित करने के लिए नहीं चाहते हैं ताकि आप केवल प्रश्नों को दूर नहीं कर पाएंगे।

सजावटी नीचे से लागू होते हैं, इसलिए login_requireddef लाइन के निकट होना चाहिए।


असली जवाब हालांकि यह है कि यह प्रत्येक सजावट करने वाले पर निर्भर करता है। आपको अपने कार्यक्रम के प्रवाह के बारे में सोचना चाहिए और क्या यह किसी के सामने आने के लिए तार्किक अर्थ देगा।

2

PEP 318 के अनुसार समारोह सज्जाकार के लिए वाक्य रचना है:

@dec2 
@dec1 
def func(arg1, arg2, ...): 
    pass 

इस के बराबर है:

def func(arg1, arg2, ...): 
    pass 
func = dec2(dec1(func)) 

और dec1 dec2 से पहले कहा जाता है।

आप इस तरह की जाँच करने के लिए इन कार्यों को परिभाषित कर सकते हैं:

def dec1(func): 
    print ‘dec1’ 
def dec2(func): 
    print ‘dec2’ 

@dec2 
@dec1 
def func(): 
    pass 
dec1 
dec2 

वास्तव में यह किसी भी त्रुटि नहीं है, लेकिन यदि आप login_reqired पहले का उपयोग करें और उपयोगकर्ता आवेदन प्रवेश न होने पर डेटा की प्रक्रिया और उस login_required के बाद यह पृष्ठ पर अंक लगाना होगा समारोह फ्लास्क में login_required डेकोरेटर के लिए एक बीच में बंद करें

बेस्ट कार्यान्वयन उत्पन्न करता है:

@paginate 
@login_required 
def view_function(): 
    pass 
संबंधित मुद्दे