[python] dotaz na webovou aplikaci v pythonu
Hynek Fabian
hynek.fabian na firma.seznam.cz
Čtvrtek Září 29 13:10:34 CEST 2011
> A nyní jsem dost zmaten jestli mám Django začít studovat nebo ne protože
> názory se zde dosti liší.
S djangem se to má jako s každým frameworkem - udělá za tebe nějakou práci, když si dáš tu práci
a naučíš se ho :-) Troufám si říci že v užitečnosti djanga se tu názory neliší, užitečnost
(jakéhokoliv) složitého frameworku pro začátečníka je věc jiná.
Jak si tak čtu tvoje zadání, řekl bych že tě to zatím nemusí vzrušovat - než se protlučeš
crawlováním, parsováním a indexováním stránek, budeš dost zkušený pythonista aby ses rozhodl
sám.
Stručný přehled jak se to má s webem v pythonu:
* udelej-si-sam:
Ve standartní knihovně je připravený jednoduchý http server. Zahákuje socket, počká na dotaz,
zavolá metodu get() nebo post() kterou mu dodáš a dá jí trubku na vstup a výstup. Všechno
ostatní (parsování dotazu, dekódování formulářových proměnných, čtení a nastavování hlaviček) si
musíš udělat ručně. Na skutečný provoz je to slabota, ale na rychlé vyzkoušení si něčeho je to
krásně jednoduché. Pokud neumíš HTTP, je to dobrý způsob jak se ho naučit :-)
* mod_python
Modul do apače s víceméně stejnou funkčností, s tím rozdílem že většinu skutečné práce oddře
chudák indián. Dotaz dostaneš rozebraný, předžvýkaný a předtrávený, ale pořád to bude holý dotaz
takže třeba přebrání dat z formuláře si musíš řešit sám. Ditto hlavičky - apač poskytuje funkce
na pohodlnější čtení a nastavování, ale rozumět jim pořád musíš sám. Samo o sobě je to spíš
jednodušší než udělej-si-sám, jenže navíc musíš ještě nastavovat apače a mapování v něm.
* wsgi
Nejnovější móda ve světě pythonu, takto v postatě totéž jako bylo CGI pro perl před dvaceti lety
:-) V podstatě jen rozhraní který může libovolný webserver implementovat aby mu libovolný
framework rozuměl. Funkčně je to daleko primitivnější než mod_python, ale od toho jsou právě ty
frameworky. Těch je milion a každý umí něco zajímavého, stačí si vybrat co ti vyhovuje. Djagno
tě určitě nezklame, ale klidně ti může stačit nečo ještě jednoduššího. IMO ti z formulářů
postačí víceméně jen vyhledávací pole, takže nebudeš potřebovat žádný přesložitěný MVC
vylomeniny (Zope se vyhni širokým obloukem :-)
* knihovny
Pokud nepůjdeš cestou nějakého megahyperframeworku tak to ještě neznamená že musíš žít na
stromě. Není problém vzít holý http server, napsat si pro pohodlí pár funkcí na přežvýkání
vstupu (ve standartní knihovně je vše potřebné), přihodit nějakou hotovou knihovnu na
šablonování (je jich milion), databázi (SQL Alchemy, amen) a máš víceméně hotovo. Když nenajdeš
ve standartní knihovně, hoď dotaz sem do konfery, určitě se ti ozve i někdo jiný než djangisti
:-)
To by na úvod snad stačilo…
Další informace o konferenci Python