« unicodeのエスケープ・アンエスケープ | トップページ | google app engineで家計簿作り2 »

2008年11月12日 (水)

google app engineで家計簿作り

せっかくdjangoに慣れ親しんだから、google app engineを使わない手は
ないっしょということで家計簿ソフトを作成。

実際に使ってみたい人はhttp://lifeaccountnote.appspot.com/ にアクセス。
使い方は簡単で項目編集で食費、家賃など分類したい項目を作成した後
家計簿画面で項目、金額、内容を入力すれば、その日使ったデータの一覧
が下に表示される。また、一覧画面では何月何日~何月何日までの指定と項目
の指定(無指定も可)をすることで、条件に一致したデータの一覧と合計を出力する。

メイン画面のイメージ

Main

まずは設定ファイルであるapp.yamlから。


# アプリケーションのID

application: lifeaccountnote

# アプリケーションのバージョン
version: 1

# ランタイムの名称。現時点では「python」のみ
runtime: python

# アプリケーションが前提としているAPIのバージョン
api_version: 1

# URLと、その処理方法の定義
handlers:
- url: /js
  static_dir: js
- url: /css
  static_dir: css
- url: /.*
  script: lifeaccountnote.py

urlのところの
- url: /js
  static_dir: js
の意味はパスが/jsで始まったら、google app engineのアプリを起動せずに
jsディレクトリ配下のファイルを直接返しますよという意味。
url:/.*はそれ以外のパスはlifeaccountnote.pyというgoogle app engine
用のpythonプログラムを起動させますという意味。

lifeaccount.py (最初の画面のみ)
# vim: fileencoding=utf-8
#!-*- coding:utf-8 -*-
#日本語
import cgi
import logging
from django.utils import simplejson
import os
import wsgiref.handlers
import datetime
from google.appengine.api import users
from google.appengine.ext import db,webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import login_required

class MainPage(webapp.RequestHandler):
  @login_required
  def get(self):
    path = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(template.render(path, {}))

  def post(self):
    user = users.get_current_user()
    _add_account(self,user)
    self.redirect("/")
def main():
  logging.getLogger().setLevel(logging.DEBUG)
  application = webapp.WSGIApplication(
                                       [('/', MainPage),
                                         ],
                                       debug=True)
  wsgiref.handlers.CGIHandler().run(application)
if __name__ == "__main__":
  main()

path = os.path.join(os.path.dirname(__file__), 'index.html')
は常套句。google app engineにアップロードしてもどこに配置されるか
判らないので__file__で今のファイルのフルパスを取得して、その
ファイルが置かれているディレクトリにテンプレートとして使用する
index.htmlのパスをpathにセットしている。
self.response.out.write(template.render(path, {}))
はtemplateにデータを書き込んだものをクライアントに返却しますよと
いう意味で、pathには先ほどのテンプレートのフルパスが入り、その後
テンプレートに渡すハッシュを渡すのだが、今回はAjaxでページを作成
するため、テンプレート自体をそのまま返却するため、空ハッシュを渡
している。だったらstaticのディレクトリに置けばいいのかも。

今日はこの辺で。

|

« unicodeのエスケープ・アンエスケープ | トップページ | google app engineで家計簿作り2 »

Google App Engine」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/68673/43096219

この記事へのトラックバック一覧です: google app engineで家計簿作り:

« unicodeのエスケープ・アンエスケープ | トップページ | google app engineで家計簿作り2 »