在从表单发布数据并使用webapp2处理它时遇到一些麻烦。
我不确定如何处理webapp2中表单中的数据,包括使用表单操作将数据发布到哪个页面。
我的表单在页面上' / schedule / create-consult'。我最初测试将前两个字段提交到同一页面(即名字和姓氏发布到/ schedule / create-consultults)。
我的表单看起来像这样
<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
答案 0 :(得分:2)
您使用post方法提交表单。您必须在处理程序类中定义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')
答案 1 :(得分:1)
它正在尝试对您的应用进行POST,但您没有配置处理器来接收它。
你有GET处理程序的地方:
class CreateConsultPage(webapp2.RequestHandler):
def get(self):
dostuf
你也需要有一个POST人员:
class CreateConsultPage(webapp2.RequestHandler):
def post(self):
dostuff