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.
W poprzedniej lekcji zajęliśmy się metodą
selekcji od lat która przyspieszyła wersety z Inki i łan
on tej lekcji pokażę wam dość podobną metodę pisać latem.
Podobno z pozoru ponieważ również przyspiesza zapytanie.
Tym razem dla meritum.
Będzie to Miami mamy w targach i chciałbym w tym place te wylicytować.
Może zrobimy to poniżej żeby było czytelnie.
Robimy to za pomocą pętli FOR.
I piszemy gra Space.
I dodajmy znak nowej linii żeby wszystko było czytelnie niższe.
I pojawiły się na dole tagi i z powrotem.
Dostaliśmy 15 zapytań czyli.
Mamy 15 artykułów i ponownie mam 15 zapytania.
Przypominam że byliśmy już Select lata
dlatego nie jest to problem autorów pojawi się problem natomiast z targami
jest to dokładnie analogiczna rzecz jaką napotyka na relacje.
Robi zapytanie i pobiera dane.
To wygląda to w ten sposób jest robione zapytanie po tak dla konkretnego artykułu
oczywiście taki stan rzeczy jest niedopuszczalne ponieważ jeżeli artykuły
będą nam się rozwijały jeżeli będziemy mieć ich coraz więcej może nawet tysiące.
To wtedy zapytanie będzie trwało kilka sekund i
zniechęci to z dużym prawdopodobieństwem użytkowników naszej strony.
Problem ten rozwiązuje się za pomocą
metody refleksji dlatego analogicznie jak w Select podaje się jakie
pole chcemy przyspieszyć i teraz jak odświeżyć.
Dostajemy dwa zapytania Tym razem
dostajemy kolejne zapytanie nie tak jak w wypadku selektywnej.
Pozostaje jedno w tym przypadku tworzymy drugie które w bardzo sprytny sposób
pobiera nam tagi które normalnie byśmy pobierali osobno.
Działa to tak że Django
robi osobne zapytanie po tagi za pomocą bazą dla nowego in dla
wszystkich kluczy które są używane w artykułach.
Jest to dużo szybsze rozwiązanie niż gdybyśmy mieli osobno odczytywać detali.
Możemy sobie zerknąć to jest nieco
czytelnie robimy Johna i robimy to konkretne
zapytanie w ten sposób możemy wypisać autorów.
Możemy wypisać tagi i dalej pozostajemy przy bardzo małej liczbie zapytań.
Aplikacja niezależnie od tego jak dużo i
tutaj piszemy będzie się ładnie miała podobnie.
A dla pokazania że tak jest w rzeczywistości wygeneruje dużo artykułów
generuje ich dwieście i zobaczymy co się stanie.
Tworzymy 200.
Teraz jesteśmy.
W momencie kiedy mamy w miarę zoptymalizowany widok mamy już salę.
Private placement
i właściwie niewiele się zmieniła dalej strona działa błyskawicznie a my.
I odświeżony ponownie strona. Dalej się ładuje.
Przypominam.
Tutaj jak się zmieni czas.
A chyba nie spodziewałem się że będzie to trwało aż tak długo.
I mamy 10 sekund ładowania strony i 430 zapytań.
Dlatego widzicie jak ważne jest jeżeli
byście mieli listę wyszukiwań na której zapomnieli byście np.
dodać nacji i byście zwracali taki widok
to taka scena byłaby praktycznie nie używana przy dużej ilości kontentu.
Alternatywną formą Life later którą możemy podawać jest klasa Life.
Dzięki temu możemy sobie zdefiniować konkretnie.
Z jakiego queer seta Chcemy preferować dane.
Pokażę wam to na przykładzie zwykłego
prefekta bez parametru werset że tworzy on dokładnie to samo co zwyczajny preferuje.
Natomiast kiedy go modyfikuje.
Dajmy na to.
To dajmy order Pink.
Order po nazwie.
I to forma KOD.
To tu pilnujemy tego fragmentu.
Dostałem order baja.
Jest to bardzo wygodne Jeżeli potrzebujemy skorzystać z innego menedżera bądź jeżeli
chcemy wykluczyć pewne pola użyć metody online albo metody de Fer.
Co ciekawe metody trwać możemy także użyć na.
Obiektach które są w relacji jeden do wielu bądź jeden do jednego.
I wtedy zadziała tak samo.
Jeżeli zamiast Select autor użyjemy siły
liter autor to zostaną brani wszyscy autorzy.
Przewrócić.
Myślę że dobrym pomysłem będzie dodanie jeszcze tagów ponieważ trwa to zbyt długo.
Pojawiła się w tym momencie dodatkowe zapytanie autorów których ID jest takie
natomiast zalecane metodą dla for linki jest selektywne i.