webapp2 - 如何 post 形成数据 - 应用引擎

webapp2 - how to post form data - app engine

post从表单获取数据并使用 webapp2 处理它时遇到一些问题。

我不确定一般情况下如何处理来自 webapp2 中的表单的数据,包括 post 使用表单操作向哪个页面发送数据。

我的表格在“/schedule/create-consult”页面上。我最初正在测试将前两个字段提交到同一页面(即名字和姓氏被 posted 到 /schedule/create-consults)。

我的表格是这样的

<form method="post" action="/schedule/create-consult">
    <div class="row">
        <div class="col-md-6">
            <label>First Name</label>
            <input class="form-control input-lg" type="text" name="first_name" />
            <br/>
        </div>
        <div class="col-md-6">
            <label>Last Name</label>
            <input class="form-control input-lg" type="text" name="last_name" />
        </div>
        <input type="submit" value="save">
    </div>
</form>

当我单击“保存”按钮时,我收到消息:

405 方法不允许 - 此资源不允许方法 POST。

我的路线是这样的

app = webapp2.WSGIApplication([
    ('/', MainPage),
    ('/schedule', SchedulePage),
    ('/consults', ConsultsPage),
    ('/schedule/create-consult', CreateConsultPage),
    ('/consults/john-smith-030617-0930', JohnSmithPage)
], debug=True)

我的 CreateConsultsPage 处理程序如下所示

class CreateConsultPage(webapp2.RequestHandler):
    def get(self):
    template = JINJA_ENVIRONMENT.get_template('/templates/create-consult.html')  
    self.response.out.write(template.render())

而我的app.yaml如下:

 runtime: python27
 api_version: 1
 threadsafe: true

 handlers:
 - url: /css
   static_dir: css
 - url: /images
   static_dir: images
 - url: /js
   static_dir: js
 - url: /
   script: main.app
 - url: /schedule
   script: main.app
 - url: /consults
   script: main.app
 - url: /schedule/create-consult
   script: main.app
 - url: /consults/john-smith-030617-0930
   script: main.app

 libraries:
 - name: webapp2
   version: latest
 - name: jinja2
   version: latest

它正在尝试向您的应用发送 POST,但您没有配置接收它的处理程序。

您的 GET 处理程序在哪里:

class CreateConsultPage(webapp2.RequestHandler):
     def get(self):
         dostuf

你还需要有一个 POST 处理器:

class CreateConsultPage(webapp2.RequestHandler):
    def post(self):
        dostuff

您正在使用 post 方法提交表单。您必须在处理程序 class 中定义 post 函数以获取提交的表单数据。这将解决您的问题。

class CreateConsultPage(webapp2.RequestHandler):
    def get(self):
        template = JINJA_ENVIRONMENT.get_template('/templates/create-consult.html')  
        self.response.out.write(template.render())

    def post(self):
        first_name = self.request.get('first_name')
        last_name = self.request.get('last_name')