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 tej lekcji pokażę wam jak korzystać z
generatora instancji modeli członków gangu Bakera.
Mamy przygotowane modele z artykułem który
ma relację do wielu z targami i relacje 1 do wielu z autorem.
Mieliśmy już wcześniej testy które sprawdzały czy
artykuł po opublikowaniu zmienia się na i spadliśmy i przeciwnie
już byliśmy Fit Szczerski z artykułem mamy wypełnioną ją tylko jednym polem tytułem.
A jak można zobaczyć.
Autor jest polem wymaganym który nie może być nurtem.
Sprawia to że tekst który mieliśmy przygotowany wcześniej.
Nie będzie już wykonywał się poprawnie.
Rozwiązaniem tego typu problemów i pewnym
ułatwieniem dla testowania są biblioteki takie jak Django Battery i np.
Factory Boya zainstaluje bibliotekę.
Próbuje ją w ten sposób nie wymaga ona
dodania do istot ABS i w tym momencie w teście który już mieliśmy wcześniej
przygotowany możemy zamienić tradycyjny artykul obiekt z krat na bakier kropka.
Biblioteka ta automatycznie wykrywa
jakie pola będą używane tylko w parametr pierwszym.
Podać model z którego ma skorzystać do
wygenerowania instancji i możemy nawet pozbyć się tego pola A.
Baker zadba o to żeby te wymagane i tak nam wypełnić.
Sprawdzimy czy testy przechodzą.
Co jest bardzo fajną opcją w tej bibliotece.
Napiszemy prosty test który sprawdzi czyta ten artykuł.
Już autora i pokażę Wam w jaki sposób są generowane obiekty.
Cel Bakera żeby był lepszy podgląd.
Jak widzimy artykuł ma bardzo skomplikowany tytuł.
Jest to ciąg znaków który w przypadku np.
czar filtra zajmuje maksymalną dozwoloną długość.
W przypadku.
W przypadku innych typów jest natomiast ustawiane tak jak powinien być
jak zaczniemy na pozostałe pola to mamy domyślne.
Kontent mamy również wypełniony i mamy też
przypisanego autora sobie na niego zepchnięte.
To on również jest wygenerowany przez bibliotekę.
Django Baker działa w ten sposób
że sprawdza które pola są wymagane łącznie z tymi danymi i
tym samym algorytmem w którym generuje nasz artykuł generuje tamte pola i
przypisuje je automatycznie do tej instancji.
Mamy tu jednak pewną dowolność jeżeli sobie.
Chcemy stworzyć konkretnego autora z konkretnym nazwiskiem.
Możemy zadeklarować.
Jakie za pomocą zamierzonego Kappa jaką powinien mieć nazwę.
W tym momencie Becker określi jakie pole tutaj dotyczy jakiego modelu.
Ruchomy.
Się przekonacie.
Jest około.
Bardzo podobnie sprawa się ma kiedy.
Będziemy chcieli wygenerować tagi.
Wystarczy że podamy.
Nazwę a Bahr automatycznie tworzy relacja.
Trzeba mieć na uwadze że domyślnie
tworzonych jest 5 obiektów powiązanych w tym przypadku tagów.
Może lepiej będzie pokazać.
Papieża.
Mam 5 sztuk jak z nazwy tych tagów to okaże się że wszystkie są nazwane test.
Jeżeli chcielibyśmy wykorzystać istniejące już.
Obiekt np.
chcielibyśmy stworzyć artykuł z istniejącym autorem
i autorem który również byłby stworzony przez Baker.
Mielibyśmy pełną kontrolę.
To jest Jan Kowalski mielibyśmy odniesienia do niego.
Wystarczy że.
Podamy pole autor I instancja obiektu i już możemy sprawdzić czy.
To jest tożsame.
Bardzo przydatną funkcją model Battery jest również tworzenie przepisów na modę.
Działa to w ten sposób że za pomocą klasy RS:X
definiujemy Jaki konkretnie model nas interesuje i jakie powinien mieć pola.
Np.
jeżeli byśmy chcieli żeby akurat w artykułach zawsze brzmiało tak samo.
Wystarczy że zrobimy to w ten sposób i teraz.
Jeżeli.
Tworzymy konkretnie z tego przepisu artykułu.
To będzie miał dokładnie taki tytuł jak chcemy.
Oczywiście tutaj przepisy nie ograniczają się tylko do prostych pól typu czarnych i.
Możemy również skorzystać z innego przepisu na zagrożony
obiekt który będzie miał również wyszczególnione jakieś pola.
Tylko wtedy podajemy.
Przykład dla tagów podajemy to w funkcji Limited.
Byśmy mieli.
Przepis dla.
Sprawdzimy czy.
Kot również się wykonuje poprawnie.
Wykorzystywanie tego narzędzia pozwala bardzo uprościć testy.
Jeżeli mamy modelek z wieloma polami
jeżeli wiele z tych pól jest wymaganych jeżeli wiele tych pól
posiada skomplikowane zagrożenia w przypadku zamówienia np.
nie musimy tworzyć klienta nie musimy
tworzyć adresu jeżeli interesuje nas kompletnie inna część tego modelu.