牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

日経ソフのGAE特集のリスト4をソースとHTMLに分離してみた

日経ソフトウエア2009年1月号の特集2『Google App EngineでWebアプリを公開してみよう』のリスト4を改良してみた。

main.py

ソースとHTMLに分離するためちょっと書き換える


頭に下記追加

import os
from google.appengine.ext.webapp import template

class AnimalHandler の def get あたりを変更

class AnimalHandler(webapp.RequestHandler):

  def get(self):
    if self.request.get("init"):
      init_data()

    query = Pet.all()
    pets = query.fetch(4)

    template_values = {'pets':pets}

    path = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(template.render(path, template_values))

  def post(self):

index.html

main.pyと同じ階層に新規ファイルindex.htmlを作成して下記を書く。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
  <a href='/?init=1'>Initialize data</a>
  <table border='1'><tr>
      <th>Name</th><th>Type</th><th>Weight</th>
      <th>spayed_or_neutered</th></tr><br>

    {% for pet in pets %}
    <tr><td>{{ pet.name }}</td>
      <td>{{ pet.pet_type }}</td>
      <td>{{ pet.weight_in_pounds }} lbs</td>
      <td>{{ pet.spayed_or_neutered }}</td>
    </tr>
    {% endfor %}
  </table>

  <form method='POST'>
    <input type='submit' value='Neuter Bill'></form>
</body>
</html>
実行結果


こんな感じでよいのかな。
ソースとhtmlばらした方がやりやすいよね?
CSSとか。よくわかんなかったりだけど。
このDjangoのテンプレート?使いやすそうかも。