od Podstaw
4 godz. 14 min · Python · Full-stack i Programowanie
Rafał Stępień.NET, JS, Java, PythonZaczniemy spokojnie, od konfiguracji Pythona oraz środowiska programistycznego. Nie tracąc czasu uzbroję Cię w zestaw podstawowych instrukcji, za pomocą których stworzymy pierwsze praktyczne programy komputerowe. Zobaczysz na czym polega logika tworzenia aplikacji, jak poprawnie wykorzystywać typy zmiennych udostępnione przez twórców Pythona oraz jak poradzić sobie z obsługą błędów. Na końcu tej sekcji dowiesz się w jaki sposób dbać o wygląd naszego kodu oraz zaoszczędzić czas stosując funkcję.
Żeby zrozumieć i wykorzystywać pracę innych programistów pragnę pokazać Ci czym są moduły i w jaki sposób możesz je tworzyć w Twoim programie. To częsta praktyka pozwalająca na zachowanie przejrzystości kodu wraz z możliwością jego powtórnego wykorzystania w innych częściach naszej aplikacji. Zaznajomimy się z narzędziem PIP, dzięki któremu z łatwością zainstalujesz jeden z ponad 200 000 projektów (bibliotek). Korzystając z pracy wykonanej dzięki tysiącom innych programistów zaoszczędzisz czas oraz zminimalizujesz ilość popełnianych błędów. Na koniec sekcji dowiesz się czym jest virtualenv i dlaczego warto korzystać z niego w każdym projekcie.
W tej sekcji wejdziemy do świata programowania obiektowego - najczęściej wykorzystywanego sposobu w jaki formuje się programy komputerowe w dzisiejszym świecie. Dowiesz się czym jest klasa oraz jak utworzyć ją w Pythonie. Zobaczysz że programiści starają się odzwierciedlić otaczający nasz świat w postać kodu na wszystkie możliwe sposoby. Zapoznam Cię z głównymi nurtami w programowaniu obiektowym, aby zrozumieć w jaki sposób napisać dobrej jakości kod. W każdej części w praktyce wykorzystamy wiedzę teoretyczną zamieniając ją na postać kodu Python-a. Na koniec pokaże Ci jak można obsługiwać niestandardowe zachowania programu w taki sposób, aby nie przestraszyć użytkownika naszej aplikacji :)
Jeśli masz dosyć tworzenia aplikacji konsolowych...wreszcie możesz odetchnąć. Wkraczamy w świat internetu! Twoim celem jest napisanie kolejnego Facebook, utworzenie własnej strony internetowej lub serwera do gier? Czas wykorzystać wiedzę zgromadzoną podczas tego kursu. Pokaże Ci w jaki sposób zainstalować oraz skonfigurować mikroframework Flask do tworzenia aplikacji internetowych. Krok po kroku pomogę Ci w utworzeniu pierwszej aplikacji internetowej wraz z pokazaniem narzędzi takich jak Jinja, sesji oraz techniki Blueprint. Na koniec sekcji pokażę Ci w jaki sposób wgrać swoją aplikację na zewnętrzny serwer i pokazać się światu!
Podczas mojej nauki, pracy oraz pomocy innymi natknąłem się na wiele problemów, które blokowały początkujących adeptów programowania przed dalszą pracą. Być może utkniesz na jakimś błędzie, usuniesz niepoprawną część kodu lub nie będziesz wiedzieć co dzieje się z Twoim programem. Miałem wiele takich chwil, dlatego specjalnie na taką okazję utworzyłem dla Ciebie skrzynkę z narzędziami. Znajdziesz tam sposoby-wytrychy na poradzenie sobie w sytuacjach kryzysowych. Dowiesz się między innymi jak krok po kroku zobaczyć w jaki sposób komputer uruchamia Twój kod, czym mogą być spowodowane niespodziewane błędy oraz w jaki sposób poprawić jakość Twojej aplikacji.
Utworzyłem ten kurs dla osób, które są na początku swojej drogi z programowaniem oraz językiem Python. Jeśli posiadasz już doświadczenie w innych językach programowania z pewnością dużo łatwiej będzie Ci przyswoić wiedzę zawartą w tym kursie, niemniej zakładam, że nie masz pojęcia o programowaniu. W kursie stawiam na praktykę i chcę Ci pokazać jak szybko wykorzystać nabytą wiedzę, dlatego też po bardziej zaawansowaną część teoretyczną odsyłam do blogów, artykułów online oraz książek ze środowiska Pythona-.
Witaj w kolejnej lekcji poprzednio mieliśmy problem ze
stanem naszej aplikacji dla przypomnienia chcę ci pokazać o
co chodzi przejdźmy zatem do postman i dodajmy jakiś produkt a
następnie sprawdźmy ile produktów mamy w koszyku aktualnie
mamy tutaj dwa produkty po 2,99 jeżeli
przejdziemy do przeglądarki to dalej widzimy tą
samą wartość teraz dla testu sprawdźmy jak zachowa się
nasz program w innej przeglądarce zobaczmy
mimo że jest to całkowicie inna przeglądarka to
dalej widnieje to suma 5.98 więc jeżeli
kilku użytkowników korzystałoby z naszej aplikacji jednocześnie to
mielibyśmy zaburzoną integralność danych nie chcemy do
tego doprowadzac dlatego też powinniśmy zapewnić aby każdy z użytkowników miał
tak zwaną oddzielną sesję i zaraz pokażę ci w jaki sposób
to uzyskać we flasku musimy zaimportować
dodatkowy moduł o nazwie session za
pomocą którego będziemy w stanie przechowywać pewne dane jedynie
w obrębie sesji użytkownika czyli w momencie kiedy wejdzie na stronę to
zostanie utworzony dla niego tak zwany klucz i w nim będą
przechowywane dane na którym będzie operował teraz zobaczymy w praktyce jak
to wygląda musimy dodać coś
co nazywa się secret key jest to
klucz który powinien być unikalny dla każdego serwera na
jego podstawie będzie tworzone ciasteczko dla użytkownika testowo
dodajmy sobie jakiś element
do naszej sesji sesja
jest tak naprawdę listą która zawiera poszczególne elementy więc
wystarczy tutaj podać jakąś wartość a
w rout'cie sum spróbujmy odczytać tą wartość naszej sesji i zweryfikujmy
czy ona faktycznie się zapisała przejdźmy
do postman dodajmy nasz produkt jest
okej i spróbujemy wywołać sum zobaczymy
w konsoli czy pojawiła się nasza wartość tak w
sesji w sesji naszego postmana udało się
zapisać tą sesję a następnie po wywołaniu route'a
sum odczytać jej wartość zobaczmy teraz co się stanie jeżeli
zrobimy to samo w przeglądarce czyli bezpośrednio wywołamy route sum
dostajemy błąd chodzi
o to że nie znaleziono klucza w naszej sesji ponieważ
za tworzenie tego klucza odpowiada wcześniej route add meal dlatego
też warto zweryfikować czy nasza sesja posiada
dany klucz robimy to w następujący sposób to
proste sprawdzanie czy dany klucz znajduje się w zmiennej
session jeżeli tak możemy go wykorzystać
teraz nie pokazała się żadna wartość
jak również nie wystąpił żaden błąd po
stronie route'a sum okej teraz jak wykorzystać
w praktyce sesję do tego aby zatrzymywać
dane dotyczące naszego koszyka przede
wszystkim musimy pozbyć się globalnego obiektu bill w tym
momencie bill będzie wspólne dla wszystkich wywołań naszej
aplikacji chcemy się tego pozbyć i
zapisywać jedynie informacje o danych zestawach
produktów w konkretnej sesji użytkownika utwórzmy
nową instancje bill i
sprawdźmy czy już posiadamy w naszej
sesji jakikolwiek produkty jeżeli
posiadamy jakiekolwiek produkty w sesji możemy przypisać je do obiektu bill
za pomocą setterów które wcześniej utworzyliśmy pamiętajmy
również o tym aby po dodaniu naszego nowego produktu
zaktualizować wartość sesji o nowe
elementy wystarczy przypisać do klucza entries
pola entries z obiektu bill zobaczymy
teraz co się stanie w postman
dostaliśmy tak zwany type error object
of type meal is not json serializable problem
polega na tym że nasza sesja nie jest w stanie przechowywać typów złożonych
nasze entries posiada
przede wszystkim obiekty które dziedziczą po w klasie
entries tak jak meal albo serwis dlatego też musimy zapewnić że
będziemy przechowywać w sesji jedynie typy proste na przykład
słowniki zmodyfikujmy więc naszą
klasę bill i
przejdźmy do naszego property w tym miejscu możemy
przekonwertować elementy z naszej listy do
typów prostych takich jak słownik robi się to za
pomocą iterowania po każdym z nich i rzutując
je za pomocą podkreślenia dict
zobaczmy teraz w jaki sposób zachowa
się na program udało nam się dodać element
który będzie już znajdował się w sesji zobaczmy
jak zareaguje nasz route sum w
tym momencie potrzebujemy uzyskać w route'cie sum dane
które są zawarte w sesji pokażemy że faktycznie
coś tam się znajduje wywołujemy
jeszcze raz sum i
widzimy że w naszej sesji znajduje się nazwa
post i określenie ceny czyli nasze dane zachowane
są już w sesji przeglądarki
lub aplikacji jaką jest postman w tym momencie przechodzimy
do naszego route'a sum i musimy zedytować go w taki sposób aby
był w stanie rozpoznać nasze
dane zawarte w sesji jak to robimy wystarczy
przejść do maina utworzyć
obiekt bill w route'cie sum
i
przypisać dane z sesji sprawdźmy
co się stanie pamiętamy że w sesji cały czas mamy już dodany
produkt tym
razem dostaliśmy błąd o nazwie attribute error nasza
aplikacja opiera się na obiektach my
w tym momencie pamiętamy że w sesji przechowujemy typ prosty który
jest słownikiem dlatego też w momencie kiedy rzutowaliśmy nasze
elementy na słowniki w setterze musimy
dokonać odwrotnej konwersji możemy
to zrobić za pomocą dodatkowej metody w
klasie meal dzięki
której będziemy w stanie zrzutować dowolny
słownik na nasz konkretny obiekt wykorzystajmy
teraz nową utworzoną metodę z klasy
meal i przeiterujmy
po wszystkich elementach które
zostały przekazane z naszej sesji w tym
momencie powinniśmy uzyskać konwersję
rzutowania elementów sprawdźmy teraz czy w postman
udało nam się naprawić błąd widzimy koszt 2.99
jeżeli dodamy nowy produkt to
ten koszt powinien się zwiększyć przejdźmy teraz do przeglądarki chrome i zobaczymy
czy naprawiliśmy problem z istnieniem sesji w
tym momencie nasza suma w przeglądarce chrome wynosi
0.0 wprowadziliśmy izolację naszych danych dzięki
zastosowaniu sesji i użytkownicy nie będą
w stanie poznać danych które są przez
nich dodawane bezpośrednio