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