2013-05-21 4 views
3

Google의 사이트에서 예를 들어 this을 팔로우하고 있습니다. 기본 작업의 작동 방식을 이해하는 데 어려움을 겪고 있습니다. 주로 MainHandler HTML에서 텍스트를 제출할 때 GuestBook 사용 방법을 어떻게 알 수 있습니까? 나는 그것이 <form action="/sign" method=post>('/sign', GuestBook)과 관련이 있다고 가정하지만, 그것이 어떻게 작동하는지 완전히 모릅니다.Google App Engine의 HTML

from google.appengine.ext import db 
import webapp2 

class Greeting(db.Model): 
    content = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 

class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.write('Hello world!') 
     self.response.write('<h1>My GuestBook</h1><ol>') 
     #greetings = db.GqlQuery("SELECT * FROM Greeting") 
     greetings = Greeting.all() 
     for greeting in greetings: 
      self.response.write('<li> %s' % greeting.content) 
     self.response.write(''' 
      </ol><hr> 
      <form action="/sign" method=post> 
      <textarea name=content rows=3 cols=60></textarea> 
      <br><input type=submit value="Sign Guestbook"> 
      </form> 
     ''') 

class GuestBook(webapp2.RequestHandler): 
    def post(self): 
     greeting = Greeting() 
     greeting.content = self.request.get('content') 
     greeting.put() 
     self.redirect('/') 

app = webapp2.WSGIApplication([ 
    ('/', MainHandler), 
    ('/sign', GuestBook), 
], debug=True) 

답변

2

정확합니다! /sign에 대한 요청이있을 때

app = webapp2.WSGIApplication([ 
    ('/', MainHandler), 
    ('/sign', GuestBook), 
], debug=True) 

그래서 새로운 GuestBook 인스턴스가 생성되고, 해당 방법은, 요구에 대한 참조를 포함하는 GuestBook 인스턴스 (불려 다음 경로는 다음 블록으로 구성된)를 첫 번째 인수로 사용합니다. 귀하의 예에서는 POST이지만 webapp2는 널리 사용되는 모든 http 메소드를 http://webapp-improved.appspot.com/guide/handlers.html

+0

으로 지원합니다. 클래스의 인스턴스 생성에 대한 몇 가지 세부 사항을 추가 한 다음 나중에 post (..) 또는' get (..)'(적절하다면) 더 나은 대답이 될 것입니다 :) – SuperSaiyan

+0

@Thrustmaster 좋은 생각! 피드백 주셔서 감사합니다 :) – Andbdrew

+2

@ Andbdrew의 답변에 추가, GAE 자체는 webapp2의 라우팅을 인식하지 못합니다. GAE 자신의 라우팅 설정은'app.yaml' 파일에 있습니다.이 파일은 WSGI 핸들러를 포함하는 변수를 가리켜 야합니다 (이 경우'app') –