1. Dekoratory¶
1.1. Cel¶
Dekoratory pozwalają rozszerzyć funkcjonalność funkcji lub klasy. Dektoratory są funkcjami które “opakowują” inne funkcje lub klasy.
1.2. Przypadki użycia¶
Pamięć podręczna - (Cache),
Sprawdzanie argumentów,
Logowanie,
Rejestracja,
Weryfikacja
1.3. Definicja¶
def decorator_function(origin_function):
def wraper_function():
print('przed funkcją o nazwie {}'.format(origin_function.__name__))
return origin_function()
return wraper_function
@decorator_function
def main_function():
print('główna funkcja')
main_function()
przed funkcją o nazwie main_function
główna funkcja
1.4. Definicja gdy funkcja ma parametry (*args / **kwargs)¶
def decorator_function(origin_function):
def wraper_function(*args, **kwargs):
print('przed funkcją o nazwie {}'.format(origin_function.__name__))
return origin_function(*args, **kwargs)
return wraper_function
@decorator_function
def hello_function(imie, nazwisko):
print('Czesc jestem {} {}'.format(imie, nazwisko))
hello_function("Adam", "Nowak")
przed funkcją o nazwie hello_function
Czesc jestem Adam Nowak
1.5. Sparametryzowany dekorator¶
1.6. Przykład¶
Cache dla stron w Django cache_page
Metoda require http methods
Note
hasattr
opisane jest w Include/abstract.h
Note
hasattr
zaimplementowane jest w Objects/object.c
1.7. Użycie¶
Tip
podejrzyj plik manage.py
np. poprzez polecenie
cat manage.py
można tam znaleźć w jaki sposób django jest uruchamiane
zmień ustawienia w settings.py
Hint
można to zrobić np. poprzez uruchomienie
vim servermonitoring/settings.py
albo bezpośredni w pyCharm