いきなりオブジェクト指向なプログラミングではじめてみます。
helloworld/main.pyにクラスを一つ追加してみます。
スタートガイドの日本語訳が結構役にたちますが、ここでは、せっかくなので、Happyブログパーツの仕様を順々に実装していきましょう。
最初に作成するクラスは、ユーザの情報を格納するデータクラスにします。
クラス名はPersonとし、名前と残高と最終更新日時を保存できるようにします。
こんな感じになります。
class Person(db.Model):
name = db.StringProperty(multiline=True) #名前
balance = db.IntegerProperty() #残高
date = db.DateTimeProperty(auto_now_add=True) #最終更新日時
googleのライブラリであるdb.Modelクラスを継承して作成しているので、以下の1行を頭の方に追加しておきます。
from google.appengine.ext import db
このdb.Modelクラスがくせ者で、googleのクラウド上に永続的にデータを保存できてしまうのです。今の段階では、その機能を使いませんが、後々のために、このdb.Modelクラスを使っておきます。
クラスからオブジェクトを生成して、次のように値を初期化してみます。
person_a = Person(name='person_a') # person_a をDB
person_a.balance = 200 # ポイントを200付与
person_b = Person(name='person_b')
person_b.balance = 200
2人のデータを生成したことになります。
これだけでは、動作するかわからないので、以下のように、HelloWorldの後ろに値を表示してみます。
class Person(db.Model):
name = db.StringProperty(multiline=True) #名前
balance = db.IntegerProperty() #残高
date = db.DateTimeProperty(auto_now_add=True) #最終更新日時
class MainHandler(webapp.RequestHandler):
def get(self):
self.response.out.write('Hello world!<br>')
person_a = Person(name='person_a') # person_a をDB
person_a.balance = 200 # ポイントを200付与
person_b = Person(name='person_b')
person_b.balance = 200
self.response.out.write(self.balanceHTML(person_a))
self.response.out.write(self.balanceHTML(person_b))
def balanceHTML(self,person):
html = 'name:' + person.name + "/"
html += 'balance:' + str(person.balance)
html += 'date:' + person.date.ctime()
html += "<br>"
return html
http://localhost:8080/でアクセスすると、二人分の初期値が表示されます。
これだけでは、なんのインタラクションもないので、
次は、「
Google App Engineでデータベースを使ってみる」で新規アカウントの受付を作ってみます。