2015-01-28 10 views

Odpowiedz

6

Chociaż prawdopodobnie nie będzie żadnego problemu w tym przypadku, bez względu na kolejność, prawdopodobnie będziesz chciał najpierw wykonać login_required, aby nie wykonywać zapytań i stronicować wyników, które zostaną po prostu odrzucone.

Dekoratory stosuje się u dołu do góry, więc login_required powinien znajdować się najbliżej linii def.


Prawdziwa odpowiedź brzmi jednak, że zależy to od tego, co robią dekoratorzy. Musisz pomyśleć o przepływie swojego programu i czy logiczne byłoby, gdyby ktoś podszedł do drugiego.

2

Według PEP 318 składnia dekoratorów funkcji jest następująca:

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

jest to równoznaczne z:

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

i dEC1 jest wywoływana przed DEC2.

Można zdefiniować te funkcje, aby sprawdzić jak to:

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

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

Właściwie to nie ma żadnego błędu, ale jeśli używasz login_reqired pierwszy i użytkownik nie jest zalogowany w aplikacji będzie przetwarzać dane i paginate go potem login_required funkcja ta wytwarza Przerwij

najlepsze wykonanie na login_required dekoratora kolby:

@paginate 
@login_required 
def view_function(): 
    pass 
Powiązane problemy