Andrise programmeerimisalane WIKI
Programmi struktuur
Kui PHP puhul asub skript HTML või mõne muu väljundfaili sees - PHP koodiblokid tuleb muu väljundi vahel spetsiaalselt tähistada <?php ja ?> märgenditega - siis Pythoni skriptid on struktureeritud sarnased PERL keelele, kus terve fail ongi skriptifail ning koodiblokkide ja muu väljundi vahel PHP'le sarnast vahet teha ei saa. Juhul kui on soov midagi väljastada, tuleb teha seda näiteks print käsuga.
Kõik skriptid algavad deklaratsiooniga, mis annavad keskkonnale teada skripti interpretaatori andmed ehk viite programmi juurde, kes antud faili käivitada oskab. Google App Engine puhul on selleks järgmine rida:
#!/usr/bin/env python
Juhul kui skriptifail ei ole ISO-8859-1 (Latin 1) vaid hoopis UTF-8 kodeeringus, siis tuleks see järgmisena (kohe teisel real) ära märkida. Nii teab Python 2.5 interpretaator millist kooditabelit kasutada.
# coding: utf-8
Järgmisena tuleks sisse laadida erinevad abistavad teegid, kuid seda saab teha vajadusel ka konkreetsete funktsioonide sees, mis antud teeke vajavad. Google App Engine puhul tuleks sisse laadida vajalikud teegid veebipäringute teenindamiseks. Selle jaoks on kasutusel WebAPP raamistik.
import wsgiref.handlers from google.appengine.ext import webapp
Antud teekide poolt pakutavad meetodid oskavad vastu võtta app.yaml konfiguratsiooni poolt suunatud veebipäringuid (näiteks kui keegi avab aadressi www.server.ee/abi, siis /abi suunatakse skriptile ühe päringuna), leida nendest üles erinevad päringu andmed (GET ja POST muutujad, küpsised jne).
Edasi tulevad konkreetsed päringute haldajad. Näitena on alljärgnevalt toodud ära minimaalne päringu haldaja nimega MainHandler, mis on laiendatud webapp.RequestHandler klassist ja saab seega kaasa vajalikud oskused päringuga ümber käia.
class MainHandler(webapp.RequestHandler): def get(self): self.response.out.write("Hello world!")
Antud klass oskab vastata GET päringutele (selle jaoks on klassis meetod get) ning ainsa tegevusena väljastab päringu vastusena brauserile stringi Hello world.
Viimasena tuleb seada üles milline päringu haldaja vastab millisele päringule. Vahet tehaks kasutatud URL'i järgi ning kasutada saab ka regulaaravaldisi.
def main(): application = webapp.WSGIApplication([('/', MainHandler)]) wsgiref.handlers.CGIHandler().run(application) if __name__ == '__main__': main()
Paksus kirjas on ära toodud massiiv, milles asuvadki sisendpäringute seosed konkreetsete haldajatega. Antud massiivil on seatud ainult üks element ja see vastab päringule / ehk siis domeeni juurkataloogile (näiteks http://www.server.ee/).
Seega kui minimaalne Google App Engine Hello world kokku panna, oleks tulemus selline.
#!/usr/bin/env python # coding: utf-8 import wsgiref.handlers from google.appengine.ext import webapp class MainHandler(webapp.RequestHandler): def get(self): self.response.out.write("Hello world!") def main(): application = webapp.WSGIApplication([('/', MainHandler)]) wsgiref.handlers.CGIHandler().run(application) if __name__ == '__main__': main()
Edasi vaatame juba kõiki skriptis kasutatavaid osi omaette.
Käidud rada: • django_tsueklid • registreerimine • python_tutvustus • django_tutvustus • bigtable_indeksid • django_parilikkus • keele_struktuurid • sms_bulletin_board • bigtable_tutvustus • programmi_struktuur