class OwnershipError(Exception): def __init__(self): self.value = "OwnershipError" class NotFoundError(Exception): def __init__(self): self.value = "NotFoundError"
とかエラーを定義して
def deleteItem(key, user): obj = db.get( db.Key.from_path( "Texts", key ) ) if obj: if user == obj.user: obj.delete() else: raise OwnershipError else: raise NotFoundError try: db.run_in_transaction(deleteItem, key, user) self.response.headers['Content-Type'] = 'text/plain' self.response.out.write("success") return except NotFoundError, e: logging.info( e.value ) except OwnershipError, e: logging.info( e.value ) self.response.headers['Content-Type'] = 'text/plain' self.response.out.write("fail")
raiseするとトランザクションのなかでエラー処理しなくていいので嬉しい
def JST(time): return ( time + datetime.timedelta(hours = 9) ).strftime("%x %X")
日本時間に変換する
データストアのDateTimePropertyでauto_now = Trueやauto_now_add = Trueを指定して使うときに日本時間で格納する方法がわからなかったのでこれで出力時に変換している
毎回変換する必要があるってのはキモいのでなんとかしたいところ
文字列連結は、単純な
for word in words str += word
とするより
"".join( word for word in words )
のほうが速い
forでインデックスを使うときは
"".join( "<word" + str(index) + ">" + words[index] + "</word" + str(index) + ">" for index, word in enumerate(words) )
みたいな感じで
db.StringListProperty()を上のようにタグにするときとかは便利
ちょろちょろとpython書いているがちょっと慣れてきた感がある
pydevのインデント関係の挙動が全然で困ってるが、それを差し引いてもずいぶん高速に書ける
右手の小指がつりそうになることがないのがいいな
rubyより先にこっちを触って、結果的にはよかったかもしれない