Google App Engine「template編」
Google App Engineの学習中。昨日のguestbookをtemplateを使って書き直しました。MVCの分離は大切です。
テンプレートで使うHTML
同じディレクトリに「index.html」を作成
<html> <head> <title>guestbook</title> </head> <body> <h1>GUEST BOOK!!</h1> {% for greeting in greetings %} <strong>Name :</strong> {{greeting.author}} <pre>{{greeting.content}}</pre> <hr> {% endfor %} <form action="/sign" method="post"> <div>NAME: <input type="text" name="author"></div> <div><textarea name="content" rows="5" cols="60"></textarea></div> <div><input type="submit" value="write"></div> </form> </body> </html>
{%〜〜%}でコマンドが書けて{{〜〜}}で囲むと変数がそこに出力されます。JSPみたい。
プログラムの変更点
MainPageクラスだけ、以下のように変更しました。
class MainPage(webapp.RequestHandler): def get(self): greetings = db.GqlQuery("SELECT * FROM Greeting ORDER BY date") template_values = { 'greetings': greetings, } path = os.path.join(os.path.dirname(__file__),'index.html') self.response.out.write(template.render(path, template_values))
template_valuesにテンプレートで使用するオブジェクトを設定してtemplate.renderで出力。