夜ご飯食べて落ち着いたら掲示板を作る予定。
予定は未定。とりあえず掲示板とか、この発想力にゲンナリ。
guestbook作りました
何とgoogleのサンプルコードはGuestbookを作りましょうでした。APIのDatastore、Templates、Usersを段階的に使っていくみたいです。丸真似しても面白くないので、参考にしつつ手を動かして作りました。どうせUsers Apiはアカウントが無いと使えないし、データベースだけ使ってみることに。
import cgi import wsgiref.handlers from google.appengine.ext import webapp from google.appengine.ext import db class MainPage(webapp.RequestHandler): def get(self): self.response.out.write('<html><head><title>guestbook</title></head><body><h1>GUEST BOOK!!</h1>\n') greetings = db.GqlQuery("SELECT * FROM Greeting ORDER BY date") for greeting in greetings: self.response.out.write("<strong>Name :</strong> %s" % cgi.escape(greeting.author)) self.response.out.write("<pre>%s</pre>\n<hr>" % cgi.escape(greeting.content)) self.response.out.write(""" <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>""") class Greeting(db.Model): author = db.StringProperty(multiline=False) content = db.StringProperty(multiline=True) date = db.DateTimeProperty(auto_now_add=True) class Guestbook(webapp.RequestHandler): def post(self): author = self.request.get('author') content = self.request.get('content') if author != '' and content != '': greeting = Greeting() greeting.author = author greeting.content = content greeting.put() self.redirect('/') def main(): application = webapp.WSGIApplication( [('/', MainPage), ('/sign', Guestbook)], debug=True) wsgiref.handlers.CGIHandler().run(application) if __name__ == "__main__": main()
おなじみの「app.yaml」を作って /usr/local/bin/dev_appserver.py -c ./guestbook で起動。-cでデータベースを初期化してます。
試行錯誤しながら1時間くらいで書きました。重要な部分はサンプル通りだけど、やはり手を動かすのは重要だね。生まれて初めて使ったpythonの感じがつかめたし。インデントとか気持ち悪いけどpython面白いです。(こうやってgoogleの罠にハマっていく俺)