1 výpis dat
~ úkolem je vypsat celou databázi nukleotidů jako HTML-tabulku
~ protože výsledek má moc řádek a trvá dlouho je složit a vypsat, omezili jsme dotaz pouze na stabilní izotopy (aby těch řádek bylo míň)
~ Poslat data do řetězce není tak jednoduché -- metodě formát vadí {} v popisu stylů (pro obarvení řádek tabulky), zasílání přes % zase vadí skutečná procenta v nadpisu jednoho sloupečku ("% branch"). Obé řeší zdvojení příslušných symbolů.
~ 06.py: Pro další práci jsem vybral metodu format(), protože její použití mi přijde čitelnější.
2 dotaz
~ nechť naše aplikace umí filtrovat výsledky podle řetězce v názvu prvku
~ pro to doplníme na příslušné místo a svážeme ho přes @id s formulářem (díky tomu je ho možné odeslat, a dokonce jenom pomocí ENTER)
~ metoda parse_qs() umí naparsovat dotaz z GETu dokonce tak dobře, že když odešleme prázdné textové pole, vůbec se ve výsledku neobjeví
~ 05.py: proto můžeme upravit dotaz do databáze jen na základě toho, zda se klíč "name" vyskytuje v naparsovaném GET-dotazu
~ 06.py: je divné, aby vyfiltrovaná odpověď v příslušném textovém poli neobsahovala řetězec, podle kterého jsme filtrování provedli => nastavíme atribut @value na pomocí proměnné "value_name" podle toho, zda se něco v GET-dotazu vyskytovalo nebo ne
TODO
~ správně samozřejmě nebude výpis omezen pouze na stabilní izotopy => první GET-dotaz na aplikaci vypíše všechno (a zobrazení stránky tak bude chvíli trvat)
~ zrovna tak není ani trochu košer, že se k databázi připojíme, ale už nikde to spojení neukončíme -- to souvisí s tím, že WSGI-server je zapnutý natrvalo a jinak než "zabitím" programu ho shodit neumíme; pro naše potřeby si to stačí uvědomit, řešit to nebudeme
~ když přidáme do aplikace druhý formulářový prvek, logika rozhodování, jaký SQL-dotaz použít a jak jaké proměnné nastavit, se začne zesložiťovat (natožpak když jich bude víc)
~ Za domácí úkol si tu logiku zkusíte aspoň jednou v životě napsat, abyste ocenili, co za vás všechno dělají knihovny, které vyrábějí formuláře a zpracovávají jejich vstupy :-)