Full Stack Python

# Flask

Flask is a Python web framework built with a small core and easy-to-extend philosophy.

## Why is Flask a good web framework choice?

Flask is considered more Pythonic than Django because Flask web application code is in most cases more explicit. Flask is easy to get started with as a beginner because there is little boilerplate code for getting a simple app up and running.

For example, here's a valid "hello world" web application with Flask (the equivalent in Django would be significantly more code):

    from flask import Flask
    app = Flask(__name__)

    @app.route('/')
    def hello_world():
        return 'Hello World!'

    if __name__ == '__main__':
        app.run()

Flask was also written several years after Django and therefore learned from the Python community's reactions as the framework evolved. Jökull Sólberg wrote a great piece articulating to this effect in his experience switching between Flask and Django.

## Flask resources

The 18-part Flask mega tutorial is an absolutely amazing starting resource for using the Flask framework. Yes, there are a lot of posts in the series. However, each post is focused on a single topic to contain the complexity while the reader is learning the framework. The whole series is well worth an in-depth read-through. The author also wrote the new O'Reilly Flask Web Development book which is an excellent learning resource.

- Part 1: Hello World
- Part 2: Templates
- Part 3: Web Forms
- Part 4: Database
- Part 5: User Logins
- Part 6: Profile Page and Avatars
- Part 7: Unit Testing
- Part 8: Followers, Contacts, and Friends
- Part 9: Pagination
- Part 10: Full Text Search
- Part 11: Email Support
- Part 12: Facelift
- Part 13: Dates and Times
- Part 14: I18n and L10n
- Part 15: Ajax
- Part 16: Debugging, Testing and Profiling
- Part 17: Deployment on Linux

- Part 18: Deployment on the Heroku Cloud

- If you're looking for a fun introduction to Flask and WebSockets, check out my blog post on creating Choose Your Own Adventure Presentations with Reveal.js, Python and WebSockets. That post is my favorite technical walkthrough I've written to date. There is also a companion open source GitHub repository for the app with tags for each step in the blog post.

- Branded MMS Coupon Generation with Python and Twilio is a Flask tutorial I wrote for building a web application that can send branded barcode coupons via MMS. The post goes through every step from a blank directory until you have a working app that you can deploy to Heroku.

- Building a blog using Flask and AngularJS Part 1 is the first of a multipart series on working with Flask and an AngularJS front end. Part 2 is also available along with the source code.

- The Flask Extensions Registry is a curated list of the best packages that extend Flask. It's the first location to look through when you're wondering how to do something that's not in the core framework.

- Explore Flask is a public domain book that was previously backed on Kickstarter and cost money for about a year before being open sourced. The book explains best practices and patterns for building Flask apps.

- Randall Degges wrote a detailed walkthrough for building a Flask app in 30 minutes.

- Building an Analytics App with Flask is a detailed walkthrough for collecting and analyzing webpage analytics with your own Flask app.

- Nice post by Jeff Knupp on Productionizing a Flask App.

- Building Websites in Python with Flask is another walkthrough tutorial from first steps through getting bigger with Flask.

- The Plank & Whittle blog has two posts, one on Packaging a Flask web app and another on Packaging a Flask app in a Debian package once you've built an app and want to deploy it.

- The Tuts+ Flask tutorial is another great walkthrough for getting started with the framework.

- Create Your Own Obnoxiously Simple Messaging App Just Like Yo is a silly walkthrough of very basic Flask web application that uses Nitrous.io to get started and Twilio for SMS.

- The blog post series "Things which aren't magic" covers how Flask's ubiquitous @app.route decorator works under the covers. There are two parts in the series, part 1 and part 2.

- Flask by Example: Part 1 shows the basic first steps for setting up a Flask project. Part 2 explains how to use PostgreSQL, SQLAlchemy and Alembic. Part 3 describes text processing with BeautifulSoup and NLTK. Part 4 shows how to build a task queue with Flask and Redis.

- Along with the above FLask by Example series, there's also a Discover Flask series of videos. The GitHub repo contains the code and the 25+ videos are hosted on YouTube.

- How to Structure Large Flask Applications covers a subject that comes up quickly once you begin adding significant functionality to your Flask application.

- Video streaming with Flask is another fantastic tutorial by Miguel Grinberg that covers video streaming.

- "One line of code cut our Flask page load times by 60% is an important note about optimizing Flask template cache size to dramatically increase performance in some cases.

- Unit Testing Your Twilio App Using Python’s Flask and Nose covers integrating the Twilio API into a Flask application and how to test that functionality with nose.

- The Flask documentation has some quick examples for how to deploy Flask with standalone WSGI containers.

- Handling Email Confirmation in Flask is a great walkthrough for a common use case of ensuring an email address matches with the user's login information.

## Open source Flask example projects

- Microblog is the companion open source project that goes along with Miguel Grinberg's O'Reilly Flask book.

- Flask Foundation is a starting point for new Flask projects. There's also a companion website for the project that explains what extensions the base project includes.

- Cookiecutter Flask is a project template for use with Cookiecutter.

- Flaskr TDD takes the official Flask tutorial and adds test driven development and JQuery to the project.

- Use the Flask App Engine Template for getting set up on Google App Engine with Flask.

- Here is a note-taking app along with the source code in Gists.

- Bean Counter is an open source Flask app for tracking coffee.

- FlaskBB is a Flask app for a discussion forum.

- psdash is an app built with Flask and psutils to display information about the computer it is running on.

## Flask framework learning checklist

Install Flask on your local development machine.

Work through the 18-part Flask tutorial listed first under "Flask resources" below.

Read through Flask Extensions Registry to find out what extensions you'll need to build your project.

Start coding your Flask app based on what you learned from the 18 part Flask tutorial plus open source example applications found below.

Move on to the deployment section to get your initial Flask project on the web.

### What do you need to learn about web frameworks next?

How do I deploy Flask web application when it's ready to go live?

I'd like to go back to reviewing other web frameworks.

The user interface looks terrible. How do I style my web app?

How can I version and store my source code so I don't lose it?

#### Interested in major updates to this site or an alert when a complete Full Stack Python book with detailed example code is released? Sign up here and you'll an occasional email only when there's big news to report.