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 pokazałem wam jak działają serie lasery.
Oczywiście pokazano to w niewielkim skrócie ponieważ funkcjonalność
jest tam znacznie więcej jako res framework oferuje nam pewną
wariacje seria lasera który nazywa się model serii reżyserem.
Dziedziczy on po serialu bezpośrednio i udostępnia wiele bardzo
ciekawych i ułatwiających życie przy pracy z modelami w gangu.
Mamy przygotowane mody artykułu i jej
autora z relacjami na siebie i napiszemy serial Wizzair.
Serial który będzie
dotyczył głównie artykułu ale będziemy chcieli jeszcze zwracać autora.
I tak z artykułu serial Historię tworzymy zazwyczaj w pliku serial.
I nazwa zazwyczaj bierze się z modelu
takich mamy artykuł to zazwyczaj jest artykul seria liter.
I tu analogicznie jak w poprzedniej lekcji będziemy framework pobierać seriale Biznes
Pakiet w pakiecie z serialami teraz istnieje model serial jest.
Aby model serial Hajzer zaczął działać tak jak chcemy musimy wskazać który
konkretnie model chcemy seriali zachować i służy do tego.
Klasa meta.
Która ma pole model.
I właśnie tutaj wskazujemy artykuł.
Klasa metal wymaga również drugiego pola jest to pole Fields lub pole ex Cloud.
I tu jest dość.
Duża dyskusja na temat tego jak powinniśmy
to wypełnić ponieważ możemy to zrobić na kilka sposobów.
Jeżeli chcemy zwracać wszystkie pola z
artykułu w tym przypadku będzie to tytuł zawartość.
Autor i id.
To wystarczy że piszemy Files podkreślił on jako String lub ex Cloud.
Jaką postacią Opla to rozwiązanie ma jednak kilka wad.
Po pierwsze jeżeli nowa osoba wchodzi do projektu to nie jest w stanie bardzo
szybko zdiagnozować jakie pola w serialach że istnieją.
Ponieważ model może dziedziczyć po kilku
różnych modelach innych i posiadać zupełnie inne pole interesów tej
bezpośrednio używanej klasie widoczne jest jeszcze trzecia metoda.
Podawanie bezpośrednio Jakie pola chce mieć w serialach zależy.
Powiedzmy że chcielibyśmy żeby ten serwis nie zawierał zawartości artykułów żeby
były to tylko tytuły żeby również autor i tak
pokażę wam teraz czym się różni model serial od standardowego serialu i zero.
Mam tutaj uruchomionego Shella z którego w którym importuje aplikacji artykuły.
Hajzer.
Sprawdzimy jakie ma pola.
I jak łatwo zobaczyć są to dokładnie te pola które mieliśmy w modelu
artykułu które są zamienione za pomocą odpowiedniej mapy na pasujące pola w tym
przypadku jeżeli miałem ręki to on się zamienia na Prima ryki Riley Teofil.
W przypadku Meritum ani na chwilę
w przypadku tych prostych typów na odpowiednie typy prymitywne
można powiedzieć że model seria liter jest takim generatory.
Seria laserów dla modeli
ale ma też wbudowane metody tworzenia i aktualizacji obiektów.
I to wam pokaże
napiszemy test w którym za pomocą seria zera stworzymy instancje modelu.
Będziemy potrzebowali pilot którym będzie tytuł.
Powiedzmy że na razie zostawię tytuł
żebyśmy zobaczyli co się stanie jeżeli nie podamy pozostałych pól.
Informujemy nasz artykul seria live i widzimy że podpowiada nam jako pierwszy
parametr instancja tej instancji nie mamy ją dopiero stworzyć dlatego podajemy data.
Sprawdzam czy serial jest poprawny
w tym momencie realizacja następuje za pomocą tych pól które
są adekwatne do naszego modelu dlatego mamy pewność integralności danych.
Oczywiście żeby test miał sens
to pole musi być ustawione na trasie i jeżeli jest tu to model realizator.
Pozwala nam na użycie metody i metody save.
Sprawdzimy czy tez się wykonuje.
Okazało się że nie zaczniemy sobie jakich jeszcze.
Artykuł wymaga od nas.
Zatrzymaliśmy się na wywołaniu IS Walid jest dostępna dopiero po tym.
I okazuje się że mamy wymagane pole Tax uzupełniły w takim razie pole Tax.
Spróbujmy.
Na razie tylko podać pole które będzie pustą listą.
Może się uda.
Niestety się nie udało.
Wychodzi na to że taki.
Będą musiały być podane.
Sprawdzimy.
Tak dostaliśmy kolejny błąd że lista nie może być pusta.
W takim razie.
Dochodzimy do kolejnej kwestii.
Nie możemy tutaj podać losowych danych
ponieważ gangu sprawdzi nam poprawność tych indyków tylko musimy utworzyć.
Importowanego z artykułów.
I wskazać jego ile.
Ważna uwaga nie przekazujemy instancji obiektów do
seriali od zera tylko przekazujemy IT seriale i sam już je odmienia.
W tym momencie wszystko powinno.
Sie.
Głupia pomyłka tak ma.
Te panie nam.
Udało się jeszcze postaram się pokazać co właściwie otworzyliśmy.
Metoda Save zwraca nam ołówek dlatego
będziemy w stanie ją będziemy w stanie przechwycić wygenerowane
artykułu w tym miejscu i spróbujemy go zdemaskować.
Widzimy że jest to pole które
wskazywaliśmy widzimy że autora nie ma ponieważ autora nie podawaliśmy i.
Sprawdzimy jaki ma.
Sprawdzimy jak jest 15 pkt i jest takie jak podaliśmy.
Pokażę wam jeszcze co zrobić jeżeli chcemy
zwrócić dane z innych serialach Azerów w serialu i artykułu.
Pokażę wam teraz co mamy w polu data dla seriali model seriale i zaraz artykułem.
Stworzymy sobie.
Model GA stworzył sobie model autora.
Stworzył jeszcze model artykułu który będzie zawierał autora i tagi.
Wskazujemy autora i otworzymy w ten sposób morze tak.
I.
Seriali mamy modę.
Może on line.
Fragmenty i reklamy.
Jak wygląda ten słownik który dostajemy.
Domyślnie dla obiektów powiązanych takich jak autor i tagi mamy tutaj
primary kije czyli nie widzimy jak ten autor się nazywa
i widzimy jak ten tak się nazywa widzimy jego reprezentację.
Możemy to zmienić.
Korzystając z wbudowanych w Res framework
metod framework klas i jedną z tych klas jest na przykład.
String Limited filia.
Klasa ta domyślnie wygeneruje nam metodę s r obiektu powiązanego czyli.
W tym przypadku będzie to prawdopodobnie coś niezbyt czytelna.
Ponieważ nie definiowany takiej metody tak jest autor Object.
Gdybyśmy mieli metodę Ester autorzy wypełnili imieniem i nazwiskiem np.
to wtedy byłoby to imię i nazwisko.
Taka tylko drobna uwaga.
Jeżeli w serialach zwierzę korzystamy z jakichś szczególnych pól
obiektu powiązanego to serial zarobi zapytanie po te pola.
Dlatego jeżeli mamy listę artykułów w
liście artykułów korzystamy pobieramy imię autora.
To wtedy będzie po każdego autora wykonywane osobne zapytanie.
Pokażę wam jeszcze.
Jedną rzecz w jaki sposób możemy łączyć serial ze sobą.
Napiszemy serię liter dla Article także.
Który będzie zwracał ID i zwracał title.
żeby go użyć należy podobnie jak
w przypadku autora przypisać atrybut Tax do tej klasy tylko
jakoś tak są w relacji wielu do wielu należy podać parametry menu.
W tym momencie.
Coś się zmieni.
Jeżeli zobaczymy
data dostaniemy listę obiektów nie listę klucze tylko listę obiektów dla
tagów seriali wydawanych na podstawie tego serialu zera które tam podaliśmy.
Tutaj też mamy problem ze spowolnieniem działania strony jeżeli
tych zapytań nie za dużo jeżeli tych rzeczy które będą się zaciągnęły w trakcie
będzie za dużo na ten problem idziemy rozwiązywać.
W rozdziale poświęconym optymalizacji bazy domowej.