Zdrojový kód webu letního dětského tábora s názvem Tábor plný překvapení.
- Je potřeba Python 3. Přesná verze Pythonu je v souboru runtime.txt.
- Je dobré si vytvořit virtualenv.
- Do virtualenvu si nainstalujeme závislosti:
pip install -r requirements.txt
- Spustíme
python runserver.py
- V prohlížeči jdeme na http://0.0.0.0:5000/
Můžeme dělat změny a pomocí gitu je posílat na GitHub. Pokud si s gitem nechceme hrát v příkazové řádce, můžeme změny provedené na našem lokálním počítači posílat i pomocí klikacího programu GitHub Desktop.
Aplikace je napsaná ve frameworku Flask. Dělá spoustu zbytečností, protože dřív stahovala automaticky informace z tabory.cz. Toto se dnes již neděje, ale kód, který se o tuto automatiku staral, zde zůstal s námi. Asi by se dal web klidně předělat čistě na statické stránky. Nebo by se data mohla číst alespoň z YAML souborů, a ne složitě parsovat nějaké vlastní výmysly v Markdownu. No, to už je výzva pro další generace...
models
- Dynamicky získávaná data ze souborů nebo (původně) z internetu (tabory.cz).models/photos.py
- Věc, která umí za běhu upravovat a zmenšovat obrázky. V šablonách se používá jako "image proxy".static
- Obrázky, CSS, atd.templates
- HTML prošpikované vkládanými daty, tzv. šablony. Jazyk šablon je Jinja2.cache.py
- Kešování obrázků a dat. Jednou se načtou a web si je chvíli pamatuje, než je načítá znova. Paměť má v adresářitmp
, který si podle potřeby vytváří.templating.py
- Nástroje pro šablony.views.py
- Samotné jednotlivé stránky (controller).
- Každý push do master větve na GitHubu spustí automatický build na Heroku.
- Heroku se podívá, jakou verzi Pythonu má použít. To zjistí ze souboru runtime.txt.
- Pak začne instalovat závislosti. Ty zjistí z requirements.txt
- Když to má hotové, podívá se do Procfile, kde zjistí, že má spustit nějaký
gunicorn taborprekvapeni:app bla bla bla
. Ten spustí/restartuje. - Tím jsou změny nasazeny na http://taborprekvapeni.cz
Gunicorn je server, který spustí Python aplikaci a vystaví ji ven. Je to totéž, co ten python runserver.py
, akorát že ten je jen na odzkoušení a ladění. Gunicorn je rychlejší a neprůstřelnější, takže se hodí ve chvíli, kdy chceme web opravdu vystavit do světa.
- Přístup na GitHub má @honzajavorek a @brnkamatej
- Přístup na Heroku má @honzajavorek a @brnkamatej
- Přístup na taborprekvapeni.cz doménu má @honzajavorek