What is Flask
=============
.. index:: ! webpage
single: webpage; static
single: webpage; dynamic
Over the past few chapters, we used HTML and CSS to design **static** web
pages. The content we put on a static page remains the same regardless of what
visitors do. The only way to change the content or appearance of the page is to
open up the code files and edit the HTML or CSS.
**Dynamic** web pages respond to user actions and update their appearance based
on those actions. For example, think of a page that shows the menu for a local
restaurant. A *static* version lets users scroll through the food choices and
read the descriptions and prices. A *dynamic* version might let users click on
items to order, choose how many servings of each, and display a running total
for the cost of the order.
Static pages provide information for users to read. Dynamic pages allow users
to interact with the content.
.. admonition:: Note
Adding a link to an HTML page does NOT make it dynamic. The content on the
page itself remains fixed. The link just sends out a new HTTP request to
retrieve a different HTML page.
Web Applications
----------------
.. index:: ! web application
A **web application** is a program that users run in their browsers. These
applications can be simple or complex, but they usually combine code that runs
on the client (HTML/CSS) with code that runs at a server (Python, Java, etc.).
The *front-end* part of the application controls what users see in their
browsers. The *back-end* part controls how data gets processed and transmitted.
Examples of web applications include online shopping spaces, email programs,
video conferencing, and anything that includes a login page or a *Submit*
button. All of these applications require code that works across multiple
browsers AND controls how the server deals with HTTP requests/responses.
Fortunately, a lot of the nuts-and-bolts details behind building a web
application have been automated. In our case, modules exist for Python that
allow us to quickly set up a new web-based program.
A Web Framework
---------------
.. index:: ! Flask, ! web framework
**Flask** is an example of a **web framework**. It is a collection of
libraries, tools, and resources that take care of the low-level tasks required
to make a web application work. This lets us focus on building our project
instead of worrying about how the client and server actually talk to each
other.
Flask also lets us test our applications in a browser. It sets up a web server
on our personal device. We can then use that local server to try out our
dynamic webpages. For example, instead of sending form data to the parrot
server, we can use Flask to collect the data, perform actions with it, and then
display new information on the page.
.. admonition:: Example
When the user submits this form, the webpage displays the original and
modified text.
.. figure:: figures/demo-flask-app.gif
:alt: An interactive form that adds text to the screen when the user submits an entry.
Flask helps us develop interactive webpages.
In this chapter, we create some simple Flask applications to get a feel for how
to use the framework.
.. admonition:: Tip
In this course, we go over the basics of using Flask. If you are interested
in going further, here are some useful resources to help you take the next
steps:
#. `Flask documentation `__
#. `The Flask Mega-Tutorial `__
#. `What is Flask (from pythonbasics.org) `__