If we want users to be able to post their own greetings, we need a way to process information submitted by the user with a web form. The
webapp2 framework makes processing form data easy.
From Hello World to Guestbook
In order to prepare the Hello World app we've created thus far, please make the following changes:
- Rename the top level
- Replace the
Restart the development server using the new
Handling Web Forms With webapp2
Declare that you are using
webapp2 by adding this
libraries section to your
Replace the contents of
guestbook/guestbook.py with the following:
Reload the page to see the form, then try submitting a message.
This version has two handlers:
MainPage, mapped to the URL
/, displays a web form.
Guestbook, mapped to the URL
/sign, displays the data submitted by the web form.
Guestbook handler has a
post() method instead of a
get() method. This is because the form displayed by
MainPage uses the HTTP POST method (
method="post") to submit the form data. If for some reason you need a single handler to handle both GET and POST actions to the same URL, you can define a method for each action in the same class.
The code for the
post() method gets the form data from
self.request. Before displaying it back to the user, it uses
cgi.escape() to escape HTML special characters to their character entity equivalents.
cgi is a module in the standard Python library; see the documentation for
cgi for more information.