[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