2012-07-03 3 views
0

main.app가 루트 페이지의 index.html 페이지 (GAE가 cgi/apache와 같이 작동하지 않음)에 관계없이 기본 페이지이므로 불행히도 폼 페이지 main.app와 쿼리/응답 페이지 response.py를 만들었습니다. 양식을 제출하면, 나는 오류가 발생합니다 :app.yaml 구성에서 일치하는 패턴, POST 404 오류

Not found error: /response.py did not match any patterns in application configuration.

application: emot13 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /stylesheets/ 
    static_dir: stylesheets 
- url:/
    script: main.app 
- url: /. 
    script: response.app 

main.app :

#!/usr/bin/env python 
import cgi 
import urllib 
from google.appengine.ext import db 
import webapp2 

class MainPage(webapp2.RequestHandler): 
    def get(self): 
     self.response.out.write("""<html> 
<body> 
<head> 
<link type="text/css" rel="stylesheet" href="/stylesheets/main.css" /> 
</head> 
<body> 

    <form action="/response.py" method="post"> #also tried "response.py", no difference 
    <p>First Name: <input type="text" name="name"/></p> 
    <p>How are things?</p> 
    <p><input type="radio" name="mood" value="good">Good</p> 
    <p><input type="radio" name="mood" value="bad">Bad</p> 
    <p><input type="radio" name="mood" value="fair">Fair</p> 
    <p><input type="submit" name="submit" value="Process"/></p> 
    </form> 
</body></html>""") 

app = webapp2.WSGIApplication(
            [("/", MainPage)], 
            debug=True) 

def main(): 
     application.run() 

if __name__ == "__main__": 
     main() 

response.py :

#!/usr/bin/env python 
import cgi 
import time 
import datetime 
import urllib 
from google.appengine.ext import db 
import webapp2 


#model 
class Visitor(db.Model): 
    name = db.StringProperty(required=1) 
    mood = db.StringProperty(choices=["good","bad","fair"]) 
    date = db.DateTimeProperty(auto_now_add=True) 

class Response(webapp2.RequestHandler): 
    def get(self): 
     today = datetime.date.today() 
     self.response.out.write("""<html><head> 
<link type="text/css" rel="stylesheet" href="/stylesheets/main.css" /> 
</head> 
<body> 
     self.response.out.write(today.strftime(<html><body><p style='color:#3E3535'>%A, %d %B</p>) 
</body></html> """) 
     localtime = time.localtime(time.time()) 
     mon = localtime[1] # MONTH 
     h = localtime[3] # HOUR 
     name = self.request.get("name") 
     name = name.capitalize() 
     mood = self.request.get("mood") 

     # variables and if/elif statements follow; they all work so that is not the problem. 

     responses = db.GqlQuery("SELECT * " 
           "FROM Visitor " 
           "ORDER BY date DESC_LIMIT 1") 
     for response in responses:                  
      if mood == "bad" and name != "": 
       # responses follow; they all work so that is not the problem. 

class Process(webapp2.RequestHandler): 
    def post(self): 
     name = self.request.get("name") 
     mood = self.request.get("mood") 
     info = Visitor(name = name, mood = mood) 
     info.put() 
     self.redirect("/") 


app = webapp2.WSGIApplication(
            [("/", Response), 
            ("/", Process)], 
            debug=True) 

# tried uncommenting this as well v v 
#def response(): 
# application.run() 

#if __name__ == "__response__": 
#  response() 

도움말을 감상 할 수있다.

답변

0

문제는 3 핸들러와 함께, 그것은 하나

- url: /.* 
    script: response.app 

또는

- url: /response.py 
    script: response.app 

등이,/A/B에 일치 게시 코드,

+0

을 읽어야 /.* 또는 /response.py 중 하나를 사용하면 양식을 제출 한 후 response.py에 "404 Not Found 리소스를 찾을 수 없습니다."라는 메시지가 나타납니다. 무엇이 이것을 일으킬 수 있습니까? 내 모든 작업 코드는 위에 게시됩니다. 양식은 app.yaml의 1 페이지를 사용하여 훌륭하게 작동하지만 응답을 처리하고 response.py에 표시해야합니다. – p1nesap

+0

다른 문제는 응답에서 get 처리기를 정의하지만 method = POST를 사용하여 양식을 제출하므로 Response 클래스에 post() 메서드가 필요하다는 것입니다. –