いまさらだけど、いろいろやろうと思う。
Pylons動かそうかとも思ったけど、とりあえず用意されているフレームワークを試してみる。
とはいえ、かったるい部分はまとめておこう。
メモ代わりに貼り付け。
from google.appengine.ext import webapp
from google.appengine.api import users
from google.appengine.ext.webapp import template
from google.appengine.ext import db
import model
import os
templates_dir = os.path.join(os.path.dirname(__file__), "templates")
def render(name, **vars):
path = os.path.join(templates_dir, name)
return template.render(path, vars)
def secure(method):
def wrap(self, *args, **kwargs):
user = users.get_current_user()
if user:
return method(self, *args, **kwargs)
else:
self.redirect(users.create_login_url(self.request.uri))
return wrap
def expose(template):
def decorator(method):
def wrap(self, *args, **kwargs):
self.response.headers['Content-Type'] = 'text/html;charset=utf-8'
data = method(self, *args, **kwargs)
body = render(template, **data)
self.response.out.write(body)
return wrap
return decorator
認証デコレータと、テンプレートレンダラ
あと、テンプレート呼び出しを簡単にするレンダラ。
exposeは、まあBuffetの劣化コピーだが、とりあえずwebapp.RequestHandlerにあわせてある。
テンプレートはとっととTempitaに変更することにしよう。
Blogged with the Flock Browser
|