TigerベースのMacOSXでのGoogle App Engine準備

Google App Engineのお勉強で、まずはHello Worldからと初めて見たら、dev_appserver.pyを実行したらみごとにエラーが発生。

AttributeError: 'module' object has no attribute 'HTTPSHandler'

Leopardの別のmacで試したときには発生しなかったんだけど、今日使ったのは元TigerLeopardにアップグレード&Pythonの環境はMacPortsで作成だったのでpy25-socket-sslが入ってなかったみたい。

ということで$ sudo port install py25-socket-sslして無事起動したので一安心。参考はここ

Google App Engineについてはまたあとで書くよ。。。ということで今日書いた部分をメモとしてはっつけとく。特に説明は無いので暇で暇で仕方ない人はどうぞー。


何がしたいかとかはまだ固まってないので、またあとでー

import wsgiref.handlers              
from google.appengine.ext import webapp
from google.appengine.ext import db
 
### Friends関連のデータモデルクラス ####################################
class Friends(db.Model):
    ### Friendsモデルに関するデータ定義
    name = db.StringProperty()        
    screen_name = db.StringProperty()   
    create_date = db.DateTimeProperty(auto_now_add=True)
                                        
### Friendsモデルに関する処理クラス ####################################
class FriendModel:                      
    def checkExists(self, screen_name):
        # 該当データが存在するかチェックして真偽値を返す
        if 0 < Friends.all().filter("screen_name", screen_name).count():
            return  True
        else:    
            False
    def addFriend(self, add_name, add_screen_name):
        # 追加データを定義して追加処理                                                                    
        new_friend = Friends(name=add_name, screen_name=add_screen_name)
        new_friend.put()

### ページ処理 ########################################################
class PageRender(webapp.RequestHandler):
    def get(self):   
        ### 改行を定義     
        line_break = '\r\n'    
        ### GET パラメータを取得     
        r_name = self.request.get("name")
        r_screen_name = self.request.get("screen_name")
        ### レスポンスヘッダーを出力 
        self.response.headers['Content-Type'] = 'text/plain;charset=UTF-8'
        ### 受け取った名前、スクリーン名を表示 
        self.response.out.write('--- Get Content' + line_break)
        self.response.out.write('Name: ' + r_name  + line_break)
        self.response.out.write('Screen_Name: ' + r_screen_name + line_break)
        ### FriendModelをnew  
        fModel = FriendModel()
        ### 存在チェックを実行       
        # 既に存在している場合はメッセージを出力
        if 0 < fModel.checkExists(r_screen_name):
            self.response.out.write(r_screen_name + ' is exists' + line_break)
        # 存在していない場合は登録処理をしてメッセージを出力
        else:                        
            fModel.addFriend(r_name, r_screen_name)
            self.response.out.write(r_screen_name + ' add' + line_break)
                                     
### メイン処理 ########################################################
def main():                          
    application = webapp.WSGIApplication([('/', PageRender)],debug=True)
    wsgiref.handlers.CGIHandler().run(application)
                 
# main()関数を実行        
if __name__ == "__main__":
    main()