2017-02-17 3 views
1

Имея некоторые проблемы с отправкой данных из формы и обработкой ее с помощью webapp2.webapp2 - как отправить данные формы - приложение движок

Я не уверен, как обрабатывать данные из формы в webapp2 в целом, включая страницу, на которой следует отправлять данные с помощью действия формы.

Моя форма находится на странице '/ schedule/create-consult'. и я изначально тестировал отправку первых двух полей на одну страницу (то есть, имя и фамилия были отправлены в/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 Method Not Allowed - 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

Возможный дубликат [405 Method Not Allowed Метод POST не допускается для этого Appengine ресурса Facebook App] (http://stackoverflow.com/questions/13346309/405-method-not-allowed-the- method-post-is-not-allowed-for-this-resource-appengin) –

+0

Должен быть отступ между def get (self): и следующая строка –

ответ

2

Вы отправляете форму, используя метод столба. Вы должны определить функцию 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

Он пытается сделайте POST для своего приложения, но у вас нет обработчика, настроенного для его получения.

Где у вас есть обработчик GET:

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

вы также должны иметь POST правша, а также:

class CreateConsultPage(webapp2.RequestHandler): 
    def post(self): 
     dostuff 
Смежные вопросы