GoogleAppEngieã§igã®ä»ç®ã¢ããªã¿ãããªã®ä½ãããã
è¤æ°äººã§å ±æåºæ¥ãä»ç®ãé常ã«é¢ç½ãã¨Voluntasæ°ããèããããä»ç®ã®å ±æãããã¦ããã£ãã®ã ããå ¨ç¶æ å ±ãæµãã¦ããªãã
ããããã®ã§ãGAEã§ä»ç®ã¢ããªãã©ãã¿ãããªã®ãä½ã£ã¦ã¿ãã
Googleã®ä»ç®ãããã§ã©ããããè³¢ãäºããã¦ãããå¤ããªãããè³¢ãäºãããé ã¯æã¡åããã¦ããªãã®ã§ã徿¸ãåªå ã䏿¸ããããããªãã£ããããã¾ãã«ã»ã¼ãããçãªä»çµã¿ã«ãããã¨ã«ããã
pullããã®ãå¿ããªãæ§ã«ããã©ã¼ã ãã¯ãªãã¯ãããã¨ææ°ã®å 容ã«ãªãã¬ãã·ã¥ãããæ§ã«ããã¦ã¿ãã
ã¢ããªã¯ããï¼http://10.2.a2c.appspot.com/fusen
ï¼æ¬¡ã®ãããã¤ã§ãã¢ã¯ã»ã¹ä¸è½ã«ãªãã¾ãã404ãªæã¯ããã¤ãã¼ãã¼ã¸ã§ã³ãé©å½ã«ä¸ãã¦ã¿ã¦ãã ãããï¼
1)ããããã¼ã¸ã§æ°è¦ã«ãã¼ãã使ããã¨ãä¸ã«èªåãåå ãã¦ãããã¼ãã®ä¸è¦§ã表示ãããã
2)ãã¼ãã®ååãã¯ãªãã¯ããäºã§ããã¼ãã®ç·¨éãã¼ã¸ã«ç§»åããã
3)ãã¼ãã®ãã¼ã¸ã§ã¯ãé©å½ã«æ¸ãã¦æåãä¿åã§ããã
4)ãã¼ããå
±æããã人ã®ã¡ã¼ã«ã¢ãã¬ã¹ï¼appspotã«ãã°ã¤ã³ããéã«ä½¿ããã®ï¼ããããã¯ãã¼ã ãç»é²ããã¨ãã®ãã¼ããå
±æãããã
ãã¼ãã®ååãurlã«ãªã£ã¦ãããããã¼ãã«å ±æè ç»é²ãç¡ãã¨ãã®ãã¼ããè¦ãäºãåºæ¥ãªãæ§ã«ãªã£ã¦ããã
ã¨ãæ¸ãã¦ã¿ãããé
ç®4ã®å
±æã®æããã¾ãã¡ä¸æãè¡ã£ã¦ãªãã
ãã°ã¤ã³ãã¦ããèªåã®userãªãã¸ã§ã¯ãã¯åãããã©ä»äººã®userãªãã¸ã§ã¯ãã®åãæ¹ãå¤ããªãã®ã¨ãuserãªãã¸ã§ã¯ãã¨ããã¯ãã¼ã ãã²ãä»ãããã¼ãã«ãä½ã£ã¦ã¿ããã©ãããããListPropertyã«å
¥ãã¦ä¸ç¶²æå°½ã«ãã¼ãã®æ
å ±ãå¼ã£å¼µã£ã¦ããæ¹æ³ãåãããªãã
ææ¥ã®åå¼·ä¼ã§èãã¦ã¿ããã
以ä¸ã½ã¼ã¹
# coding:utf-8 import logging import wsgiref.handlers from google.appengine.ext import db from google.appengine.api import users from google.appengine.ext import webapp from google.appengine.ext.webapp import template import urllib import datetime from google.appengine.ext.webapp.util import * from django.utils import simplejson from google.appengine.ext.db import djangoforms class Card(db.Model): owner = db.UserProperty() title = db.StringProperty(multiline=True, required=True) body = db.StringProperty(multiline=True) audience = db.ListProperty(users.User) update = db.DateTimeProperty() create_at = db.DateTimeProperty(auto_now_add=True) class NickName(db.Model): mine = db.UserProperty(required=True) nick_name = db.StringProperty(required=True) class CardForm(djangoforms.ModelForm): class Meta: model = Card exclude = ['create_at'] # ãã©ã¼ã ã«ä¸è¦ãªããããã£ãªã¹ã class Index_Page(webapp.RequestHandler): @login_required def get(self): user = users.get_current_user() cards = Card.all().filter('audience =', user) p = {'cards':cards} p['card_form'] = CardForm() p['login_user'] = user #p['nick_name'] = NickName.all().get().get_by_key_name(user) self.response.out.write(template.render('templates/main.html', p)) def post(self): user = users.get_current_user() card = Card.all().filter('title') self.request.get('body') class note_page(webapp.RequestHandler): @login_required def get(self, note_title): user = users.get_current_user() card = Card.all().get().get_by_key_name(note_title) p = {'card':card} #p['card_form'] = CardForm(card[0]) self.response.out.write(template.render('templates/note.html', p)) def post(self, note_title): title = self.request.get('title') xbody = self.request.get('body') card = Card.get_or_insert(title, body = xbody ) card.body = xbody card.update = datetime.datetime.now() card.put() self.redirect('/fusen/note/%s'%(title)) class NewNote(webapp.RequestHandler): def post(self): user = users.get_current_user() title = self.request.get('title') card = Card.get_or_insert(title, owner = users.get_current_user(), title = title, body = u'空ã£ã½ã®ãµãã', update = datetime.datetime.now() ) card.audience.append(user) card.put() self.redirect('/fusen') #-------------API--start------------------------ class Api_get_body(webapp.RequestHandler): def get(self): note_title= self.request.get('note') card = Card.all().get().get_by_key_name(note_title) res = {'body':card.body} self.response.content_type = 'application/json' self.response.out.write("%s" % (simplejson.dumps(res, ensure_ascii=False))) #-------------API--end------------------------ def main(): app_urls = [('/fusen', Index_Page), ('/fusen/note/(.*)', note_page), ('/fusen/new_note', NewNote), ('/fusen/api/get_body.*', Api_get_body), ('/fusen.*', Index_Page) ] application = webapp.WSGIApplication(app_urls, debug=True) wsgiref.handlers.CGIHandler().run(application) #web.webapi.internalerror = web.debugerror if __name__ == '__main__': main()