GAE Python スタートガイドのプログラムを少し改造。

| トラックバック(0)
スタートガイドのプログラムを少しいじってみる。

なんとなく電話のメモを取るような感じにしてみる。(ほぼ掲示板だけど・・・。)

app.yaml

application: memo
version: 1
runtime: python
api_version: 1

handlers:
- url: .*
  script: main.py

main.py

import cgi

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
import os
from google.appengine.ext.webapp import template

class Greeting(db.Model):
  author = db.UserProperty()
  content = db.StringProperty(multiline=True)
  company_name = db.StringProperty()
  client_name = db.StringProperty()
  rank = db.StringProperty()
  date = db.DateTimeProperty(auto_now_add=True)


class MainPage(webapp.RequestHandler):
  def get(self):
    greetings_query = Greeting.all().order('-date')
    greetings = greetings_query.fetch(10)

    if users.get_current_user():
      url = users.create_logout_url(self.request.uri)
      url_linktext = 'Logout'
    else:
      url = users.create_login_url(self.request.uri)
      url_linktext = 'Login'

    template_values = {
      'greetings': greetings,
      'url': url,
      'url_linktext': url_linktext,
      }

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

class Guestbook(webapp.RequestHandler):
  def post(self):
    greeting = Greeting()

    if users.get_current_user():
      greeting.author = users.get_current_user()

    greeting.content = self.request.get('content')
    greeting.company_name = self.request.get('company_name')
    greeting.client_name = self.request.get('client_name')
    greeting.rank = self.request.get('rank')
    greeting.put()
    self.redirect('/')

application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/sign', Guestbook)],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()
index.html


<html>
  <body>
    {% for greeting in greetings %}
      {% if greeting.author %}
        <b>{{ greeting.author.nickname }}</b> wrote:
      {% else %}
       An anonymous person wrote:
      {% endif %}
      <p>会社:{{ greeting.company_name|escape }} | 担当者:{{ greeting.client_name|escape }} | 手ごたえ:{{ greeting.rank|escape }}%</p>
      <blockquote>{{ greeting.content|escape }}</blockquote>
    {% endfor %}
<hr />
    <form action="/sign" method="post">
      <div>会社:<input type="text" name="company_name">  担当者:<input type="text" name="client_name"></div>
      <div>手ごたえ:<select name="rank">
      	<option value="0" />0
      	<option value="10" />10
      	<option value="20" />20
      	<option value="30" />30
      	<option value="40" />40
      	<option value="50" />50
      	<option value="60" />60
      	<option value="70" />70
      	<option value="80" />80
      	<option value="90" />90
      	<option value="100" />100
      </select>%</div>
      <div>メモ:<br /><textarea name="content" rows="3" cols="60"></textarea></div>
      <div><input type="submit" value="Sign Guestbook"></div>
    </form>

    <a href="{{ url }}">{{ url_linktext }}</a>

  </body>
</html>


sample_1.jpg

何とか動いた。
main.pyの「Greeting」class(サンプルのまま名前変えてない・・・。)でモデルの定義をしてる。
どのデータがどのProperty クラスなのかわからなくなったら型とプロパティ クラスを参照。

ほんの少しつかめてきた。

Google App Engine 実践リファレンス
清野 克行
技術評論社
売り上げランキング: 47717
おすすめ度の平均: 4.0
4 これから始めたい方に・・・JavaでもPythonでも

トラックバック(0)

トラックバックURL: http://www.mogumagu.com/mt/mt-tb.cgi/25

2012年1月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

ウェブページ

このブログ記事について

このページは、モグマグが2010年5月 7日 00:12に書いたブログ記事です。

ひとつ前のブログ記事は「GAE Python スタートガイドをやってみる」です。

次のブログ記事は「ThinkPad x61にFedora13入れるメモ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 5.01