For Alicia.
Flask stands out from other frameworks because it lets developers take the drivers seat and have full creative control of their applications. Maybe you have heard the phrase fighting the framework before. This happens with most frameworks when you decide to solve a problem with a solution that isnt the official one. It could be that you want to use a different database engine, or maybe a different method of authenticating users. Deviating from the path set by the frameworks developers will give you lots of headaches.
Flask is not like that. Do you like relational databases? Great. Flask supports them all. Maybe you prefer a NoSQL database? No problem at all. Flask works with them too. Want to use your own homegrown database engine? Dont need a database at all? Still fine. With Flask you can choose the components of your application or even write your own if that is what you want. No questions asked!
The key to this freedom is that Flask was designed from the start to be extended. It comes with a robust core that includes the basic functionality that all web applications need and expects the rest to be provided by some of the many third-party extensions in the ecosystem and, of course, by you.
In this book I present my workflow for developing web applications with Flask. I dont claim to have the only true way to build applications with this framework. You should take my choices as recommendations and not as gospel.
Most software development books provide small and focused code examples that demonstrate the different features of the target technology in isolation, leaving the glue code that is necessary to transform these different features into a fully working applications to be figured out by the reader. I take a completely different approach. All the examples I present are part of a single application that starts out very simple and is expanded in each successive chapter. This application begins life with just a few lines of code and ends as a nicely featured blogging and social networking application.
Who This Book Is For
You should have some level of Python coding experience to make the most of this book. Although the book assumes no previous Flask knowledge, Python concepts such as packages, modules, functions, decorators, and object-oriented programming are assumed to be well understood. Some familiarity with exceptions and diagnosing issues from stack traces will be very useful.
While working through the examples in this book, you will spend a great deal of time in the command line. You should feel comfortable using the command line of your operating system.
Modern web applications cannot avoid the use of HTML, CSS, and JavaScript. The example application that is developed throughout the book obviously makes use of these, but the book itself does not go into a lot of detail regarding these technologies and how they are used. Some degree of familiarity with these languages is recommended if you intend to develop complete applications without the help of a developer versed in client-side techniques.
I released the companion application to this book as open source on GitHub. Although GitHub makes it possible to download applications as regular ZIP or TAR files, I strongly recommend that you install a Git client and familiarize yourself with source code version control, at least with the basic commands to clone and check out the different versions of the application directly from the repository. The short list of commands that youll need is shown in . You will want to use version control for your own projects as well, so use this book as an excuse to learn Git!
Finally, this book is not a complete and exhaustive reference on the Flask framework. Most features are covered, but you should complement this book with the official Flask documentation.
How This Book Is Organized
This book is divided into three parts:
, explores the basics of web application development with the Flask framework and some of its extensions:
- describes the installation and setup of the Flask framework.
- dives straight into Flask with a basic application.
- introduces the use of templates in Flask applications.
- introduces web forms.
- introduces databases.
- introduces email support.
- presents an application structure that is appropriate for medium and large applications.
, builds Flasky, the open source blogging and social networking application that I developed for this book:
- implements a user authentication system.
- implements user roles and permissions.
- implements user profile pages.
- creates the blogging interface.
- implements followers.
- implements user comments for blog posts.
- implements an Application Programming Interface (API).
, describes some important tasks not directly related to application coding that need to be considered before publishing an application:
- describes different unit testing strategies in detail.
- gives an overview of performance analysis techniques.
- describes deployment options for Flask applications, both traditional and cloud based.
- lists additional resources.
How to Work with the Example Code
The code examples presented in this book are available from GitHub at https://github.com/miguelgrinberg/flasky.
The commit history in this repository was carefully created to match the order in which concepts are presented in the book. The recommended way to work with the code is to check out the commits starting from the oldest, then move forward through the commit list as you make progress with the book. As an alternative, GitHub will also let you download each commit as a ZIP or TAR file.
If you decide to use Git to work with the source code, then you need to install the Git client, which you can download from http://git-scm.com. The following command downloads the example code using Git:
$
git clone https://github.com/miguelgrinberg/flasky.git
The git clone
command installs the source code from GitHub into a flasky folder that is created in the current directory. This folder does not contain just source code; a copy of the Git repository with the entire history of changes made to the application is also included.
In the first chapter you will be asked to check out the initial release of the application, and then, at the proper places you will be instructed to move forward in the history. The Git command that lets you move through the change history is git checkout
. Here is an example:
$
git checkout 1a
The 1a
referenced in the command is a tag , a named point in the history of the project. This repository is tagged according to the chapters of the book, so the 1a
tag used in the example sets the application files to the initial version used in .
In addition to checking out the source files for a version of the application, you may need to perform some setup. For example, in some cases you will need to install additional Python packages or apply updates to the database. You will be told when these are necessary.
You will normally not modify the source files of the application, but if you do, then Git will not let you check out a different revision, as that would cause your local changes to be lost. Before you can check out a different revision, you will need to revert the files to their original state. The easiest way to do this is with the git reset
command:
$