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 lekcji zajmiemy się metodami Walii i Walii list.
Są to metody które przyspieszają dostęp do prostych danych i możemy zamiast pobierać
normalnego seta zamieniać go na słowniki zamieniać go na
jakąś listę pobrać bezpośrednio dane za pomocą Wallis i Wallis listy.
Przygotowałem bardzo prosty widok
który będzie zwracał nam to co będziemy wyciągać z bazy danych.
Na razie wygląda w ten sposób spróbujmy otworzyć
coś na kształt API w którym będziemy zwracali listę idei i tytułów artykułów.
Zaczniemy od napisania gwary seta.
Użyjemy funkcji Varius w tym przypadku niezbędna wali do środka
jako parametry podamy które konkretnie pola nas interesują.
To dwa pola id i.
Wklej metodą odpowiedzi otworzymy.
Okazało się że.
Nie jest to bezpośrednio słownik
i nie jest to bezpośrednio coś co jest w stanie zostać z serialu zerwane
automatycznie aby za pomocą klasy Jackson Response wrócić taki rodzaj danych.
Należy dodać.
Parametry Say Falls.
Dostajemy kolejny komunikat obiekt typu Quercus nie jest
i nie może zostać automatycznie z seriali wzywany do sądu.
Może pokaże wam w tym momencie.
Jaki rodzaj gwary seta otrzymujemy za pomocą metody.
Wejdziemy do Shella.
Pobieramy artykuły.
Metoda Varius zwraca nam werset który zawiera listę słowników
żebyśmy mogli za pomocą Jackson Response zwrócić coś takiego.
Musimy poza tym że daliśmy parametr Save Falls rzutować artykuły na listę.
W tym momencie otrzymujemy.
Standardową.
Listę standardowy typ strukturę danych z Pythona.
Widzimy pomniejsza dostaliśmy tutaj.
Sony mamy w tym momencie bardzo prymitywny widok który zwraca nam Jacksona
ale zalecał bym skorzystanie nawet do tak prostych widoków.
Zresztą framework pozwoli nam to na uniknięcie takich konwersji.
Takiego niepotrzebnego i niezbyt ładnego kodu.
Poza tym sejf równa się w Polsce raczej nie brzmi zbyt dobrze.
Jeszcze może opowiem dlaczego musimy to
tutaj podać dlatego że Article jest listą a Jackson Response żeby nie wyrzucał
błędów wymaga słownika zanim zmienimy w takim razie widok Django
owe standardowe na widok Rest framework bowiem zamiast użyjemy API
i zamiast Jackson Response użyjemy Response Response domyślnie korzysta z.
Jasona.
Możemy usunąć nawet sejf musimy jeszcze
dodać Rest framework do zainstalowanej aplikacji.
Wierzymy dostaliśmy znacznie ładniejszy
widok z formatów Jacksonem spróbujmy jeszcze.
Uprościć to.
Otworzyłem.
Dalej mamy to samo.
W tym momencie kot już wygląda dużo ładniej.
Mamy tylko dwie linijki i możemy takie API już teoretycznie gdzieś
serwować popatrzcie teraz na kolejną pułapkę.
Jeżeli dodali byśmy tutaj Tagi są w relacji wiele do wielu.
Cierpimy jeszcze na artykuły mamy tutaj trzy artykuły odświeżone
i pojawiły się cztery artykuły i wynika to z pewnej specyfiki działania metody walki
która w przypadku wielu powiązanych obiektów dopisuje nam nasze dane.
Wall juz jest o tyle fajna że robi błyskawiczne zapytanie do bazy danych
i używa metody online żeby pobrać tylko te pola które konkretnie nas interesują.
W przypadku kiedy robimy takie zapytanie
to nie pobieramy autora nie pobieramy tagów pobieramy tylko ID z bazy danych.
Dlatego jest to bardziej optymalne rozwiązanie niż tradycyjne.
ART OBJECT ol i wyciąganie tych danych na poziomie Pythona.
Kolejną ciekawą metodą jest walił list walił list osobiście najczęściej używam
kiedy chciał chce pobrać wszystkie idiotki które są dostępne za danego obiektu.
Kiedy kiedy tworzę panel administracyjny i chciałbym stworzyć listę rozwijane
ustawami to z własnego doświadczenia najczęściej korzystam z Walią.
Kiedy chcę pobrać i wszystkich obiektów
które znajdują się w bazie danych sprawdzimy jaki rezultat osiągniemy za
pomocą prostej zamiany list i pozostawieniu ich.
Dostaliśmy listę z danymi listami które miałem tylko jeden element.
Jeżeli byśmy chcieli żeby ją nieco uprościć wystarczy dodać parametr flat.
I w tym momencie odświeżenie przy ładowaniu serwera mamy
w błyskawiczny sposób dostęp do wszystkich ID artykułów.
Kiedy artykułów jest już bardzo dużo to
jest to dużo szybsze niż tradycyjne pobranie za pomocą dowalić.
Jeżeli usunięcie parametru
możemy dodawać również kolejne pola i wtedy utworzy nam się lista z listami.
Które będą zawierały pola w tej kolejności którą podaliśmy.
Dawali już list i dawali juz możemy dodawać pola które są datowane.
Sprawdzimy to na przykładzie.
Prostej funkcji.
W której jako X damy te.
Nic się nie zmieniło.
Czyli wszystko działa zgodnie z założeniami.