Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

1. diel - Úvod do frameworku Flask a webových aplikácií v Pythone

Vitajte u úvodné lekcie kurzu, v ktorom sa naučíme vytvárať webové aplikácie s frameworkom Flask pre Python. Kurz je určený pre začiatočníkov vo webových technológiách, predpokladá však, že poznáte aspoň Základy Pythone a Objektovo orientované programovanie v Pythone. Budeme vytvárať dynamické webové aplikácie. Začneme jednoduchú kalkulačkou a od tej sa dostaneme až k databázam a skrátka všetkému, čo by poriadna webová aplikácia mala vedieť.

V dnešnom tutoriále si Flask predstavíme a povieme si na čo sa používa. Než začneme so samotným programovaním, urobíme si všeobecný úvod do webových aplikácií. Keď sa ich chystáme vytvárať, mali by sme vedieť ako fungujú :)

Flask

Flask framework pre Python - Flask framework pre Python

Flask je webový microframework pre programovací jazyk Python, ktorého vznik bol pomerne zaujímavý, vznikol totiž ako aprílový žart. Všetko začalo v roku 2010, kedy začali prichádzať nové microframeworky do Python komunity. Zrazu prišiel microframework s názvom Denied, ktorý o sebe tvrdil, že nemá žiadne požiadavky a stačí jeden .py súbor. Nebola to úplne pravda, pretože autor použil nástroj Werkzeug (webový toolkit, na ktorom je Flask založený) a Jinja2 (čo je template engine, ktorý Flask používa) a vložil ich do už spomínaného jedného súboru, ktorý používateľ importoval a všetko zázrakom fungovalo. Komunita si Denied obľúbila a tak vznikol Flask microframework.

Flask nemá žiadne vlastné ORM, teda framework pre objektovú prácu s databázou, a tak dáva používateľom slobodu vybrať si vlastný. Väčšina vrátane mňa preferuje SQLAlchemy. Na rozdiel od Django tento microframework neponúka žiadnu administráciu ani takéto vymoženosti, nikomu však nebráni stiahnuť si nejakú administráciu od komunity. Flask routing, ktorý slúži pre definovanie adresy pre každú stránku, používa dekorátory, čo mi príde veľmi efektívny a Pythonistické.

Výhody webových aplikácií

Nie je náhoda, že sa väčšina dnešných aplikácií píše pre web. Je to z toho dôvodu, že webové aplikácie majú oproti klasickým (desktopovým) mnoho výhod a ich vývoj je výhodnejšie a tiež zarobia zvyčajne viac peňazí alebo pritiahnu viac užívateľov.

Aby sme tieto výhody a princípy pochopili, urobme si krátku odbočku do histórie a vysvetlíme si, čo k vzniku webových aplikácií vôbec viedlo.

Mainframy

Keď sa počítače prvýkrát dostávali medzi ľudí a do firiem, boli veľmi drahé. Bolo nepredstaviteľné, že by mal každý zamestnanec svoj počítač. Z toho dôvodu sa zakúpil jeden centrálny počítač (ktorý bol na tú dobu veľmi výkonný) ak tomuto centrálnemu počítaču sa jednoducho povedané pripojilo niekoľko klávesníc a monitorov. Všetci zamestnanci pracovali súčasne na tomto jednom počítači, ktorý je obsluhoval.

Keby sa teda napr. Išlo o kancelársku programe Word, každý užívateľ by mal na mainframe nejakú svoju zložku s dokumentmi a všetci by pracovali s tým jedným Wordom, ktorý je na mainframu nainštalovaný.

architektúra mainframu - Flask framework pre Python

Výhody tejto architektúry sú nasledujúce:

  • Jednoduchá správa - Aby mohli užívatelia používať nejakú aplikáciu, stačí túto aplikáciu nahrať na mainframe. V tú chvíľu je prístupná všetkým užívateľom. To isté platí pre aktualizáciu, aktualizujeme mainframe a všetci už používajú novú verziu aplikácie.
  • Vysoká bezpečnosť - Všetky dáta sú uložené v databáze na mainframu, nie na staniciach zamestnancov. To isté platí o samotných aplikáciách, k ich kódu sa nikto nedostane.

Máme tu samozrejme aj nevýhody:

  • Nízky výkon a vysoká cena - Mainframe vyžaduje vysoký výkon a spracováva úplne všetky úlohy aplikácie. Jeho prevádzka je nákladný.

Mainframy sa už takmer nepoužívajú, ale dodnes ešte v niektorých podnikoch fungujú.

Desktopové aplikácie

Ako sa počítače začali rozširovať medzi menšie firmy a potom dokonca aj do domácností, začala samozrejme klesať ich cena. Osobný počítač si už mohol dovoliť každý. Mainframům odzvonilo a nebol dôvod, aby každý zamestnanec alebo všeobecne užívateľ nemal svojou aplikáciu vo svojom počítači.

Keď opäť použijeme náš príklad s Wordom, tu má každý užívateľ svoje dokumenty a svoj Word vo svojom počítači (desktope).

Architektúra desktopových aplikácií - Flask framework pre Python

Výhody desktopových aplikácií:

  • Vysoký výkon - Všetok výkon aplikácie zaisťuje klientsky počítač. Niekedy v tomto prípade hovoríme o tzv. Hrubom klientovi. Vtedy aplikácia komunikuje so serverom, ktorý sa stará len o zasielanie dát a nerieši napr. Vykresľovanie formulárov, čo za neho robí práve aplikácie.

nevýhody:

  • Zložitá správa - Ak vydáme novú verziu našej aplikácie, musíme zabezpečiť, aby si každý klient aktualizoval svoj počítač. To sa nám samozrejme nepodarí a preto riešime problémy so starými verziami. Inštalácia a sťahovanie aplikácií je pre užívateľov otravná.
  • Nízka bezpečnosť - Keďže je u klienta prítomná celá aplikácia, môže sa ju snažiť disassemblovat (hackovať), čo nie je u dnešných vysokých jazykov príliš veľký problém. Môže nám z aplikácie ukradnúť časti zdrojových kódov alebo nejaké dáta.

Webové stránky

S rozšírením internetu najprv vzniklo obrovské množstvo statických webových stránok. Určite ste si nejaké webové stránky niekedy skúsili vytvoriť, jedná sa o textový súbor, kde pomocou značiek označíte určitú časť ako nadpis, odsek, obrázok a podobne. Výsledná stránka je (ako už bolo povedané) statická. Nemôže sa teda meniť, je to len elektronický dokument, ktorý môžeme len čítať.

HTML stránky (HTML je značkovací jazyk) sú jednoducho uložené na serveri. Akonáhle klient (užívateľ s webovým prehliadačom) pošle požiadavku na server, server mu jednoducho vráti presne tú stránku, čo má uloženú. Tejto architektúre sa hovorí klient-server.

Architektúra klient-server - Flask framework pre Python

Určite ste si všimli, že sa architektúra nápadne podobá mainframu. Vraciame sa teda ku koreňom a získavame nasledujúce výhody:

  • Malá záťaž - Server iba zasiela HTML stránky a už nerieši ich zobrazenie, ovládanie klávesnica užívateľa, jeho monitora a podobne. To všetko sa deje na klientskom počítači.
  • Jednoduchá správa - Akonáhle zmeníme obsah na serveri (napr. Pridáme nejaký dokument), uvidí ho tam okamžite všetci užívatelia.
  • Vysoká bezpečnosť - Ak chceme zakázať prístup k nejakým dokumentom, klient sa k nim jednoducho nemá ako dostať, pretože sú na serveri.

Nevýhodou je samozrejme to, že server vie zasielať len statické HTML stránky. Nie je spôsob, ako serveru odoslať nejaké dáta a na ich základe dostať výstup (treba nechať na stránke odkaz v diskusii, hlasovať v ankete alebo zobraziť v stránke kto má dnes sviatok).

Webové aplikácie

Po obrovskom rozmachu internetu a webových stránok sa hľadali spôsoby, ako do stránok pridávať nejakú dynamickú funkčnosť. Tieto pokusy došli postupom času tak ďaleko, že v dnešnej dobe sme schopní dosiahnuť, aby sa webová stránka správala úplne rovnako, ako desktopová aplikácia (napríklad MS Word z desktopu je na webe dostupný ako Office 365 alebo napr. Cez Google Docs). Takéto webovej stránke sa hovorí webová aplikácia.

Webové aplikácie fungujú tak, že sa klient spýta serveru na určitý dokument. Na serveri ale beží program, ktorý dokáže vygenerovať do stránky to, čo užívateľ požaduje. Stránka teda na serveri už neleží, ale je dynamicky vytváraná podľa toho, čo používateľ chce. Práve Flask nám umožňuje takéto skripty v Pythone na serveri prevádzkovať.

Architektúra webových aplikácií v Pythone - Flask framework pre Python

Často je scenár nasledovné:

  1. Užívateľ vyťukať do prehliadača URL adresu (napríklad eshop.cz/tiskarna-epson-123) a tým pošle požiadavku serveru
  2. Server zavolá Flask
  3. Flask spracuje požiadavku (tu chce používateľ vypísať informácie o tlačiarni). Pripojí sa k databáze a načíta dáta, ktoré chce klient. Na základe dát vygeneruje webovú HTML stránku.
  4. Hotová stránka je zaslaná klientovi. Ten vidí už len statickú webovú stránku, ktorá však bola dynamicky vytvorená podľa jeho požiadavky.

Všetky dáta sú v databáze a webová aplikácia, tu v príklade nejaký e-shop s IT, má rozhranie, cez ktoré môže personál jednoducho pridávať nové produkty, upravovať ich cenu a podobne. Je vám asi jasné, že keby dáta nebola v databáze, ale každý produkt mal svoju statickú HTML stránku, tak by bolo extrémne ťažké takúto veľa stránok spravovať. Navyše by sa potom nedalo pomocou skriptu treba hľadať podľa ceny, písať k produktom komentáre a podobne.

Práve sme si teda popísali princíp dynamického webu a tiež jeho príklad. Aké sú teda výhody webových aplikácií?

  • Jednoduchá správa - Novú verziu aplikácie nahráme a v tom okamihu ju používajú úplne všetci.
  • Vysoká bezpečnosť - Web aj databázy sú na serveri a ak neobsahuje nejaké bezpečnostné chyby, je veľmi neľahké aplikáciu ukradnúť.
  • Vysoká užívateľská základňa - Ľudia sú leniví sťahovať a inštalovať. U webové aplikácie len kliknú na odkaz a už s ňou pracujú. Používateľov, ktorí by používali tú istú aplikáciu, keby bola na desktope miesto na webe, by bolo podstatne menej. A práve kvôli používateľom aplikácie predsa píšeme. Nech sú zadarmo alebo sú platené, vždy chceme, aby ich používalo čo najviac ľudí. Toto je hlavný dôvod, prečo sa v poslednej dobe robí v podstate všetok softvér webový.
  • Vysoká kompatibilita - Keďže na web pristupujeme cez webový prehliadač, vôbec nás nezaujíma operačný systém klienta, naše aplikácie funguje prakticky všade, dokonca aj na mobile.
  • Pretrvávajú tiež výhody klientskeho počítača, teda že server nie je zaťažovaný napr. Vlastným zobrazovaním stránok, to robí webový prehliadač.

Je vidieť, že webové aplikácie sú budúcnosť. A kto ich vie, ten sa bude mať dobre.

Ich asi jedinou nevýhodou je, že ich vývoj je o niečo náročnejšie, než u aplikácií desktopových. Je to z toho dôvodu, že web bol sprvu navrhnutý pre statické dokumenty a existujú určité obmedzenia, ktoré sa musia obchádzať. Avšak technológia sa stále vyvíjajú a veľa vecí ide oproti minulosti už podstatne ľahšie. Môžu za to najmä nové štandardy HTML 5 a CSS 3.

Zložitejšie webové aplikácie sú väčšinou ešte doplnené ďalším programovacím jazykom - JavaScriptom. Ten beží na klientskom počítači a spracováva vizuálnu časť aplikácie. Tu na ITnetworku je v JavaScripte naprogramované napr. Navigačné menu. JavaScript slúži skôr pre také doplnky v užívateľskom rozhraní a je podstatný až u zložitých webových aplikácií.

To by bolo do úvodu všetko. V budúcej lekcii, Zoznámenie s Flask microframeworkem , si Flask nainštalujeme a vytvoríme svoju prvú webovú aplikáciu.


 

Všetky články v sekcii
Flask framework pre Python
Preskočiť článok
(neodporúčame)
Zoznámenie s Flask microframeworkem
Článok pre vás napísal MQ .
Avatar
Užívateľské hodnotenie:
4 hlasov
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity