Соответствующие шаблоны в конфигурации app.yaml, ошибка POST 404

Поскольку main.app является страницей по умолчанию, независимо от страницы index.html в корневом каталоге (GAE, к сожалению, не работает как cgi/apache), я создал страницу формы main.app и страницу запросов / ответов response.py. После отправки формы я получаю сообщение об ошибке:

Ошибка не найдена: /response.py не соответствует ни одному шаблону в конфигурации приложения.

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()

Помощь будет оценена.

1 ответ

Проблема с третьим обработчиком, он должен читать либо

-   url: /.*
    script: response.app 

или же

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

Код, который вы разместили, будет соответствовать, /a, /b и т. Д.

Другие вопросы по тегам