2014年7月19日土曜日

開発環境

Head First Python (Paul Barry(著)、 O'Reilly Media )のChapter 10(Scaling your Webapp: Getting real)、EXERCISE(p.381)を解いてみる。

EXERCISE(p.381)

コード(BBEdit, Emacs)

hfwwg.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from google.appengine.ext.webapp import template
from google.appengine.ext.db import djangoforms
import hfwwgDB

class SightingForm(djangoforms.ModelForm):
    class Meta:
        model = hfwwgDB.Sighting

class SightingInputPage(webapp.RequestHandler):
    def get(self):
        html = template.render('templates/header.html',
                               {'title': 'Report a Possible Sighting'})
        html += template.render('templates/form_start.html', {})
        html += str(SightingForm(auto_id=False))
        html += template.render('templates/form_end.html',
                                {'sub_title':'Submit Sighting'})
        html += template.render('templates/footer.html', {'links':''})
        self.response.out.write(html)
    # exercise
    def post(self):
        new_sighting.sighting = hfwwgDB.Sighting()
        new_sighting.name = self.request.get('name')
        new_sighting.email = self.request.get('email')
        new_sighting.date = self.request.get('date')
        new_sighting.time = self.request.get('time')
        new_sighting.location = self.request.get('location')
        new_sighting.fin_type = self.request.get('fin_type')
        new_sighting.whale_type = self.request.get('whale_type')
        new_sighting.blow_type = self.request.get('blow_type')
        new_sighting.wave_type = self.request.get('wave_type')
        new_sighting.put()
        html = template.request('templates/header.html', {'title': 'Thank you'})
        html += '<p>Thank you for providing your sighting data.</p>'
        html += template.render(
            'templates/footer.html',
            {'links':'Enter <a href="/">another sighting</a>.'})
        self.response.out.write(html)
        # exercise end
            
app = webapp.WSGIApplication({('/.*', SightingInputPage)}, debug=True)

def main():
    run_wsgi_app(app)

if __name__ == '__main__':
    main()

0 コメント:

コメントを投稿