Posiadanie problemów z wysyłaniem danych z formularza i obsługi go z WebApp2.

Nie jestem pewien, jak obsługiwać dane z formularza w WebApp2 w ogóle, w tym, która strona, aby opublikować dane do działania formularza.

Moja forma znajduje się na stronie "/ harmonogram / Create-Consult". I początkowo testuję przesyłanie dwóch pierwszych pól do tej samej strony (tj. Imię i nazwisko, które zostały opublikowane na / harmonogram / Create-Consults).

Mój formularz wygląda tak

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

Po kliknięciu przycisku Zapisz, otrzymuję wiadomość:

405 Metoda niedozwolona - Post Metoda nie jest dozwolona dla tego zasobu.

Moje trasy wyglądają tak

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

Mój przewodnik dla CreateConsultSpage wygląda tak

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

A moja aplikacja jest następująca:

 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
1
TimothyAURA 17 luty 2017, 16:10

2 odpowiedzi

Najlepsza odpowiedź

Składasz formularz za pomocą metody pocztowej. Musisz zdefiniować funkcję POST w klasie obsługi, aby uzyskać przesyłane dane formularza. Spowoduje to rozwiązanie problemu.

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')
2
shahzeb akram 20 luty 2017, 04:59

Próbuje zrobić post do swojej aplikacji, ale nie masz programu obsługi skonfigurowanego do jej odbierania.

Gdzie masz swój program obsługi:

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

Musisz także mieć poręczkę:

class CreateConsultPage(webapp2.RequestHandler):
    def post(self):
        dostuff
1
Bravin Balasubramaniam 17 luty 2017, 14:17