Techniki Zaawansowane
3 godz. 43 min · Python · Full-stack i Programowanie
Grzegorz SzymborskiProgramistaJeżeli na samym początku nie przygotujemy dobrze projektu, to gdy wrócimy do niego po dłuższym czasie - czekają nas kłopoty. Jeżeli uda się nam go uruchomić, to rozeznanie się w nim będzie udręką. Prowadzący pokaże Ci jak wyglądają jego produkcyjne aplikacje, na co zwraca uwagę i co pomaga mu trzymać porządek.
Biblioteka pytest posiada wiele ciekawych funkcjonalności. Parametryzowanie testów, fixture i uproszczona składnia pozwalają nam skupić na testowaniu tego, co kluczowe, wydzielając mniej istotne fragmenty kodu. To wszystko sprawia, że w pewnym momencie łatwiej będzie Ci pisać testy, niż ręcznie sprawdzać poprawność działania apki.
Jeżeli aplikacja, którą stworzysz, osiągnie dużą popularność, może się okazać, że przytłoczona dużym ruchem zacznie spowalniać... lub całkowicie przestanie odpowiadać. Opiszemy różne techniki służące temu, by temu zaradzić - od metod select i prefetch related, aż po cache. Na deser przeprowadzimy na stronie test obciążeniowy za pomocą narzędzia locust.
Django i Postgres to świetne połączenie. Framework ten posiada wbudowaną obsługę wyszukiwania pełnotekstowego oferowanego przez tę bazę. Warto wiedzieć, kiedy jej użyć, a kiedy wystarczy zwykłe icontains.
ORM w Django ułatwia mnóstwo operacji. A czasem nie dość to, że ułatwia... to jeszcze przyspiesza! Chcemy zainspirować Cię czterema metodami: annotate, aggregate, bulkupdate i bulkcreate. Gdy pojawią się one w naszym kodzie, zaczniemy doceniać uroki frameworka Django.
Kurs jest stworzony dla osób, które znają już podstawy Django i wiedzą, jak pisać proste strony. Znają modele, widoki, oraz niestraszny im jest Python. Zalecana jest również podstawowa znajomość dowolnej relacyjnej bazy danych. W kursie przedstawiamy niekiedy narzędzia i praktyczne przykłady, jak można ich użyć, ale w celu zaimplementowania konkretnego rozwiązania w projekcie wymagana będzie umiejętność czytania dokumentacji.
Tej lekcje opowiem wam czym jest Properties.
Myślę że warto zacząć od tego co to jest Property.
Można powiedzieć że jest to taka metoda która przyjmuje tylko parametry Self
jest udekorowane za pomocą Property i wywołuje ją jako zwykły atrybut.
Mamy tutaj przykład Property Total Art cel
skaut która jest wywoływana za pomocą autor kropka.
Total Art skąd.
Specjalnie dodałem Filipa sekundowe żeby pokazać że funkcja jest ciężka dlatego że
będzie nam to potrzebne do przykładu Properties.
Wyobraźmy sobie że zamiast lipa tutaj jest jakieś ciężkie zapytanie do bazy danych że
to jest pobranie jakichś danych z zewnątrz i kiedy używamy kaset Property.
Kiedy korzystamy wiele razy z tego konkretnego atrybutów pokaże to w konsoli.
Gdzie bierzemy.
Modele autora.
I weźmiemy któregoś konkretnego wysyłamy sobie raporty.
Zwróćcie uwagę że nie ma tutaj awansu tak jakby to był zwykły atrybut.
Nie dostajemy czwórkę jeżeli znowu chcemy z tego skorzystać.
Znowu czekamy. Znowu czekamy.
I tak w kółko.
Jeżeli chcielibyśmy to przyspieszyć.
To w takim celu warto zastosować właśnie to Properties.
Importuje to z.
Pakietu Django Swanson na test Property.
I spróbujemy uruchomić ponownie.
Zwróćcie uwagę na pierwsze wywołanie i dalsze pierwsze wywołanie jest długa.
Natomiast następne są już błyskawiczne
test Property działa tak że na poziomie instancji obiektu zapisuje
wynik tego Property i później nie wywołuje go od nowa tylko
serwuje nam od razu to co byśmy wcześniej obliczyli.
Pokażę wam jedną rzecz na którą
powinniście uważać kiedy stosuje się Properties.
Wyobraźmy sobie że piszemy testy i chcemy napisać test tego konkretnego Properties.
Może tak po prostu nazwane.
Stworzymy sobie autora.
Stworzymy powiedzmy dwa artykuły.
Ale nawet.
Nie macie jeszcze konkretnych danych które
będą wskazywać na tego autora i w tym momencie.
Wartość tego pola powinna wskazywać dwa.
Sprawdzimy czy wszystko działa poprawnie.
Uruchomimy testy i widzimy że testy wykonuje się poprawnie.
Co jeśli chwilę później byśmy dodali kolejny artykuł na oczekiwaliśmy żeby.
że liczba dostępnych środków
liczba napisanych artykułów przez tego autora wzrośnie.
Otóż okazuje się że niezupełnie.
Gdzieś przechowywana jest wartość która już nie jest aktualna.
Spróbujmy za pomocą serii Fresh from GB zaktualizować.
Okazuje się że to nie pomogło.
Dlatego niezbędne będzie.
Pobranie autora ponownie.
Ponieważ dopiero wtedy usuwane jest zawartość tego Property.