google app engine 2 ( main.py )

จริงๆ main.py เป็น print print โง่ๆเลยก็ได้

print 'Content-Type: text/plain'
print ''
print 'Hello, world!'

แต่ใน new_project_template/main.py ทำงานโดยใช้ webapp framework แบบนี้

import wsgiref.handlers

from google.appengine.ext import webapp

class AddPage(webapp.RequestHandler):

def post(self):

...

class MainHandler(webapp.RequestHandler):

def get(self):

self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello world!')

def main():
application = webapp.WSGIApplication([('/', MainHandler), ('/add',AddPage)],
debug=True)
wsgiref.handlers.CGIHandler().run(application)

if __name__ == '__main__':
main()

ซึ่งผลลัพธ์ก็คือคำว่า  Hello world! เหมือนกัน

NOTE :

– เราสามารถ escape HTML special char ได้โดยใช้โมดูล cgi ตามนี้
cgi.escape

self.response.out.write(cgi.escape(self.request.get('content')))

– [(‘/’, MainHandler)] เป็นการ map URL

นอกจากนี้ยังสามารถใส่เป็น regex ได้ด้วยดังนี้ (r‘/blog/(.*)/(.*)’, CommentView)

ซึ่งจะต้องรับ parameter มาจาก method

def get(self, blog_id, comment_id): # รับ parameter สองตัว

– import wsgiref.handlers : เป็นการใช้ wsgiref เพื่อรัน WSGIApplication โดยใช้ CGI adaptor ดูรายละเอียดจาก wsgiref module documentation

– debug=True : จะมีการ print stack traces ถ้ามี error หรือ uncaught exception
– ดู webapp reference ที่นี่

เกี่ยวกับ webapp framework นิดนึง

google app engine สนับสนุน framework พวก
Django, CherryPy, Pylons, และ web.py

แต่ของ google ชื่อ webapp framework

* one or more RequestHandler classes ประมวลผล requests และสร้าง responses
* a WSGIApplication instance that routes incoming requests to handlers based on the URL
* a main routine that runs the WSGIApplication using a CGI adaptor

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s