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
helloworld
directory toguestbook
- Rename
helloworld.py
toguestbook.py
- Replace the
handlers
section ofapp.yaml
with:
Restart the development server using the new guestbook
directory.
Handling Web Forms With webapp2
Declare that you are using webapp2
by adding this libraries
section to your app.yaml
:
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.
The 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.