Google App Engine はフレームワークではなくプラットフォームであることを思い出してください。したがって、質問は、webapp2 (GAE で使用されるデフォルトのフレームワーク) に Cookie を処理するための優れたインターフェースがあるかどうかです。フレームワークにこのインターフェースがない場合でも、リクエストの Cookie ヘッダーにアクセスできる限り、Cookie にアクセスできます。
以下に 2 つの例を示します。1 つは webapp2 Cookie インターフェースを使用し、もう 1 つは Cookie ヘッダーのみを使用しています。
webapp2:
class MyHandler(webapp2.RequestHandler):
def get(self):
show_alert = self.request.cookies.get("show_alert")
...
Cookie ヘッダー (webapp2 を使用):
# cookies version 1 is not covered
def get_cookies(request):
cookies = {}
raw_cookies = request.headers.get("Cookie")
if raw_cookies:
for cookie in raw_cookies.split(";"):
name, value = cookie.split("=")
for name, value in cookie.split("="):
cookies[name] = value
return cookies
class MyHandler(webapp2.RequestHandler):
def get(self):
cookies = get_cookies(self.request)
show_alert = cookies.get("show_alert")
...
同じことがセッションにも当てはまりますが、独自のセッション ライブラリを作成するのはより困難ですが、いずれにせよ、webapp2 で説明しました:
from webapp2_extras import sessions
class MyBaseHandler(webapp2.RequestHandler):
def dispatch(self):
# get a session store for this request
self.session_store = sessions.get_store(request=self.request)
try:
# dispatch the request
webapp2.RequestHandler.dispatch(self)
finally:
# save all sessions
self.session_store.save_sessions(self.response)
@webapp2.cached_property
def session(self):
# returns a session using the backend more suitable for your app
backend = "securecookie" # default
backend = "datastore" # use app engine's datastore
backend = "memcache" # use app engine's memcache
return self.session_store.get_session(backend=backend)
class MyHandler(MyBaseHandler):
def get(self):
self.session["foo"] = "bar"
foo = self.session.get("foo")
...
セッションと Cookie の詳細については、 webapp のドキュメントを参照してください。
テンプレートに関する質問については、使用しているテンプレート エンジンのドキュメントを参照して、知っておくべきことを探してください。