Google App Engine テンプレートを利用する
スポンサーリンク
このドキュメントの内容は、以下の通りです。
Google App Engineでは、テンプレートが利用できます。ソースコードの中にHTMLを埋め込むとメンテナンスしづらくなります。
そういう場合には、テンプレートシステムを利用するとHTMLを別のファイルに分けることができ、特別なシンタックスでアプリケーションで作成したデータを埋め込むことができます。Pythonにはテンプレートシステムが色々あります。webappモジュールには、Djangoテンプレートエンジンが含まれているため、すぐに利用することが可能です。SDKにも含まれています。
テンプレートを使う
テンプレートを使うには、下記の宣言をします。
import os from google.appengine.ext.webapp import template
ディレクトリを作成する
ディレクトリ名は適当でいいです。
mkdir hellowebapp
app.yaml
先ほど作成した hellowebapp のディレクトリに下記のファイルを作成します。
app.yaml
application: hellowebapp version: 1 runtime: python api_version: 1 handlers: - url: /.* script: hellowebapp.py
hellowebapp.py
メインになるプログラムを記述します。
先ほど作成した hellowebapp のディレクトリに下記のファイルを作成します。
hellowebapp.py
このプログラムでは、未ログインユーザにはログインを求め、ログインユーザに対してログイン名を画面に表示するだけのプログラムです。
import os from google.appengine.ext.webapp import template from google.appengine.api import users from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app class MainPage(webapp.RequestHandler): def get(self): user = users.get_current_user(); if user: username = user.nickname() login_url = users.create_logout_url(self.request.uri) login_txt = 'Logout' else: username = 'Guest' login_url = users.create_login_url(self.request.uri) login_txt = 'Login' template_values = { 'username': username, 'login_url': login_url, 'login_txt': login_txt, } path = os.path.join(os.path.dirname(__file__), 'index.html') self.response.out.write(template.render(path, template_values)) application = webapp.WSGIApplication([('/', MainPage)], debug=True) def main(): run_wsgi_app(application) if __name__ == "__main__": main()
プログラムに関する説明。
index.html(後述)というテンプレートを用意します。
辞書型の template_values に変数名と値のペアを設定します。
template.render()でテンプレートにtemplate_valuesが渡され、テンプレート(ここではindex.html)の変数名が展開され、変数名に対応する値に置き換わります。
未ログイン状態の場合、ログイン用URLが表示され、Guestと表示されます。
ログイン状態の場合、ログアウト用URLが表示され、nickname(表示名)が表示されます。
index.html
などの特別なシンタックスの部分が template_values の値が割り当てられて表示されます。
<html> <head> <title>App Engine</title> </head> <body> <a href="{{ login_url }}">{{ login_txt }}</a><br> Hello {{ username }} </body> </html>
動かし方
hellowebappのディレクトリがカレントディレクトリなら。
sudo /usr/local/share/google-appengine/dev_appserver.py .
カレントディレクトリに hellowebappのディレクトリがあるなら。
sudo /usr/local/share/google-appengine/dev_appserver.py hellowebapp
hellowebappのディレクトリを指定して起動するなら。
sudo /usr/local/share/google-appengine/dev_appserver.py /path/to/hellowebapp
開発環境(SDK)で実行したときにログインしていない場合は、 localhost の _ah/login にリダイレクトされ、Eメールアドレスを求められる。
Google App Engineで実行したときにログインしていない場合は、Googleのログインページへリダイレクトされ、通常のログインを要求される。
アクセス
http://localhost:8080 にブラウザでアクセスしてください。
localhost 以外のアクセスは拒絶されます。
未ログインの場合は、ログインURLとGuest が表示されれば、成功です。
ログイン状態の場合は、ログアウトURLと表示名 が表示されれば、成功です。
終了の仕方
C-c
参考
Google App Engine 関連記事
[2009-02-22-1] FreeBSDにGoogle App Engine SDKをインストールする
[2009-02-23-1] Google App EngineでHello worldを書く
[2009-02-28-1] Google App Engine 有料サービス開始
[2009-03-02-1] Google App Engine Pythonのアプリケーションをアップロードする
[2009-03-07-1] Google App Engine Googleアカウント認証を利用する
参照しているページ (サイト内): [2009-03-07-1]
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12