Flask Blueprints
By Perras Joël
()
About this ebook
Related to Flask Blueprints
Related ebooks
Mastering Flask Rating: 0 out of 5 stars0 ratingsBuilding Web Applications with Flask Rating: 0 out of 5 stars0 ratingsLearning Flask Framework Rating: 4 out of 5 stars4/5Building Web Applications with Python and Neo4j Rating: 0 out of 5 stars0 ratingsNeo4j High Performance Rating: 0 out of 5 stars0 ratingsPython Web Scraping - Second Edition Rating: 5 out of 5 stars5/5Mastering PyCharm Rating: 5 out of 5 stars5/5Twilio Best Practices Rating: 0 out of 5 stars0 ratingsJasmine JavaScript Testing - Second Edition Rating: 0 out of 5 stars0 ratingsFlask Framework Cookbook Rating: 5 out of 5 stars5/5Flask By Example Rating: 0 out of 5 stars0 ratingsPython High Performance - Second Edition Rating: 0 out of 5 stars0 ratingsLearning Cython Programming - Second Edition Rating: 0 out of 5 stars0 ratingsPython Concurrency with asyncio Rating: 0 out of 5 stars0 ratingsBuilding Python Real-Time Applications with Storm Rating: 0 out of 5 stars0 ratingsSvelteKit Up and Running: Leverage the power of a next-generation web framework to build high-performance web apps with ease Rating: 0 out of 5 stars0 ratingsWebRTC Blueprints Rating: 0 out of 5 stars0 ratingsBeagleBone By Example Rating: 0 out of 5 stars0 ratingsBackbone.js Patterns and Best Practices Rating: 0 out of 5 stars0 ratingsSpring Integration in Action Rating: 0 out of 5 stars0 ratingsPySide GUI Application Development - Second Edition Rating: 0 out of 5 stars0 ratingsIronPython in Action Rating: 0 out of 5 stars0 ratingsConcurrency in .NET: Modern patterns of concurrent and parallel programming Rating: 0 out of 5 stars0 ratingsDomain Driven Design A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsNginx Troubleshooting Rating: 0 out of 5 stars0 ratingsLearning Concurrent Programming in Scala - Second Edition Rating: 0 out of 5 stars0 ratings
Programming For You
Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Python: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5Coding with JavaScript For Dummies Rating: 0 out of 5 stars0 ratingsGrokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Clean Code in JavaScript: Develop reliable, maintainable, and robust JavaScript Rating: 5 out of 5 stars5/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5Learn Python in 10 Minutes Rating: 4 out of 5 stars4/5Learn Algorithmic Trading: Build and deploy algorithmic trading systems and strategies using Python and advanced data analysis Rating: 0 out of 5 stars0 ratingsGrokking Simplicity: Taming complex software with functional thinking Rating: 4 out of 5 stars4/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5Narrative Design for Indies: Getting Started Rating: 4 out of 5 stars4/5TensorFlow in 1 Day: Make your own Neural Network Rating: 4 out of 5 stars4/5Artificial Intelligence Programming with Python: From Zero to Hero Rating: 0 out of 5 stars0 ratingsPython Machine Learning By Example Rating: 4 out of 5 stars4/5Microservices Architecture Handbook: Non-Programmer's Guide for Building Microservices Rating: 4 out of 5 stars4/5Artificial Intelligence with Python Rating: 4 out of 5 stars4/5HTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5
Reviews for Flask Blueprints
0 ratings0 reviews
Book preview
Flask Blueprints - Perras Joël
Table of Contents
Flask Blueprints
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Starting on the Right Foot – Using Virtualenv
Setuptools and pip
Avoiding dependency hell, the Python way
Working with virtualenv
Creating a new virtual environment
Activating and deactivating virtual environments
Adding packages to an existing environment
Uninstalling packages from an existing environment
Simplifying common operations – using the virtualenvwrapper tool
Summary
2. Small to Big – Growing the Flask Application Structure
Your first Flask application structure
From module to package
From package to blueprint
Our first blueprint
Summary
3. Snap – the Code Snippet Sharing Application
Getting started
Flask-SQLAlchemy
Configuring Flask-SQLAlchemy
SQLAlchemy basics
Declarative mapping and Flask-SQLAlchemy
Snap data models
Flask-Login and Flask-Bcrypt for authentication
Flask-WTF – form validation and rendering
Hashing user passwords
Configure an application SECRET_KEY
Hook up the blueprint
Let's run this thing
The data model for snaps
Better defaults with content-sensitive default functions
Snap view handlers
Summary
4. Socializer – the Testable Timeline
Starting off
Application factories
The application context
Instantiating an app object
Unit and functional testing
Social features – friends and followers
Functional and integration testing
Publish/subscribe events with Blinker
Signals from Flask and extensions
Creating custom signals
Graceful handling of exceptions
Functional testing
Your newsfeed
Summary
5. Shutterbug, the Photo Stream API
Starting off
The application factory
Interlude – Werkzeug
Simple APIs with Flask-RESTful
Improved password handling with hybrid attributes
API authentication
Authentication protocols
Getting users
Creating new users
Input validation
API testing
Interlude – Werkzeug middlewares
Back to Shutterbug – uploading photos
File uploads in distributed systems
Testing the photo uploads
Fetching the user's photos
Summary
6. Hublot – Flask CLI Tools
Starting off
The manage.py file
The built-in default commands
The Flask-Script commands across Blueprints
Submanagers
The required and optional arguments
Flask extensions – the basics
When should an extension be used?
Our extension – GitHubber
Summary
7. Dinnerly – Recipe Sharing
First OAuth
Why use OAuth?
Terminology
So what's wrong with OAuth 1.0?
Three-legged authorization
Setting up the application
Declaring our models
Handling OAuth in our views
Creating recipes
Posting recipes to Twitter and Facebook
SQLAlchemy events
Finding common friends
Interlude – database migrations
Alembic
Summary
Index
Flask Blueprints
Flask Blueprints
Copyright © 2015 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: November 2015
Production reference: 1251115
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78439-478-3
www.packtpub.com
Credits
Author
Joël Perras
Reviewers
Shalabh Aggarwal
Christoph Heer
Andreas Porevopoulos
Commissioning Editor
Julian Ursell
Acquisition Editor
Meeta Rajani
Content Development Editor
Shweta Pant
Technical Editor
Bharat Patil
Copy Editor
Tasneem Fatehi
Project Coordinator
Sanjeet Rao
Proofreader
Safis Editing
Indexer
Monica Ajmera Mehta
Graphics
Disha Haria
Production Coordinator
Nilesh R. Mohite
Cover Work
Nilesh R. Mohite
About the Author
Joël Perras has been professionally involved in technology and computing for over 12 years. He got his start in the world of programming by attempting to teach himself Java at the tender age of 13 and got his first job at a small web development firm a few years later writing Java Server Pages. The first site he built is still running.
While studying physics and mathematics at McGill University in Montréal, he helped set up a Tier II analysis centre for the Worldwide LHC Computing Grid, which cemented his interest in distributed systems architecture and high performance computing.
Currently, his days are spent building infrastructure and Python applications with the incredible people at Fictive Kin, writing open source code, and trying to lift heavy weights over his head on a regular basis.
I'd like to thank Sara for her infinite patience throughout the process of writing this lengthy technical manual and my coworkers at Fictive Kin for dealing with my particularly bad sense of humor on a daily basis.
About the Reviewers
Shalabh Aggarwal has several years of experience in developing business systems and web applications for small-to-medium scale industries. He started his career working on Python, and although he works on multiple technologies, he remains a Python developer at heart. He is passionate about open source technologies and writes highly readable and quality code.
Shalabh is also active in voluntary training for engineering students on nonconventional and open source topics. When not working with full-time assignments, he acts as a consultant for start-ups on leveraging different technologies. He is pursuing his master's degree in business from IIT Delhi.
I would like to thank my family, my mother, and my sister for putting up with me during my long writing and research sessions. I would also like to thank my friends and colleagues who encouraged me and kept the momentum going. I would like to thank Armin Ronacher for developing this wonderful web framework.
Christoph Heer is a passionate Python developer based in Germany. He likes to develop web applications and also tools and systems for infrastructure optimization, management, and monitoring. He is proud to be a part of the great Python community and wishes to have more time for open source contribution.
Andreas Porevopoulos has loved computers and programming since he was in high school and over the years he has developed many apps in different languages and systems, but Python was always his favorite. He has been working as a Full Stack Python developer for the last 7 years and has completed lots of projects in Django and Flask. He believes that these two frameworks are among the best for web app development.
The agile practices that he uses for all his developing/deploying needs are Git, Ansible, Vagrant, and Docker.
www.PacktPub.com
Support files, eBooks, discount offers, and more
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Free access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.
Preface
The setting is familiar enough: you're a web developer who has worked with a few programming languages, frameworks and environments, and decided to learn enough Python to make a few toy web applications. Maybe you've already used some Python web frameworks to build an application or two, and want to explore a few of the alternative options that you keep hearing about.
This is usually how people come to know about Flask.
As a microframework, Flask is built to help you and then get out of your way. Taking a very different approach from most other general-purpose web frameworks, Flask consists of a very small core that handles the processing and normalization of HTTP and the WSGI specification (via Werkzeug) and provides an exceptionally good templating language (via Jinja2). The beauty of Flask lies in its intrinsic extensibility: as it was designed from the start to do very little, it was also designed to be extended very easily. A pleasant consequence of this is that you are not beholden to a particular database abstraction layer, authentication protocol, or caching mechanism.
Learning a new framework is not simply about learning the basic functions and objects that are provided to you: it's often as important to learn how the framework can be adapted to help you build the specific requirements of your application.
This book will demonstrate how to develop a series of web application projects with the Python web microframework, and leverage extensions and external Python libraries/APIs to extend the development of a variety of larger and more complex web applications.
What this book covers
Chapter 1, Starting on the Right Foot – Using Virtualenv, kicks off our dive into Python web application development with the basics of using and managing virtual environments to isolate the application dependencies. We will look at the setup tools, pip, libraries, and utilities that are used to install and distribute reusable packages of Python code, and virtualenv, a tool to create isolated environments for the Python-based software requirements of a project. We will also discuss what these tools are not able to do, and look at the virtualenvwrapper abstraction to augment the functionality that virtualenv provides.
Chapter 2, Small to Big – Growing the Flask Application Structure, explores the various baseline layouts and configurations that you might consider for a Flask application. The pros and cons of each approach are outlined as we progress from the simplest one-file application structure to the more complex, multipackage Blueprint architecture.
Chapter 3, Snap – the Code Snippet Sharing Application, builds our first simple Flask application centered around learning the basics of one of the most popular relational database abstractions, SQLAlchemy, and several of the most popular Flask extensions: Flask-Login to handle authenticated user login sessions, Flask-Bcrypt to ensure that account passwords are stored in a secure manner, and Flask-WTF to create and process form-based input data.
Chapter 4, Socializer – the Testable Timeline, builds a very simple data model for a social web application where the main focus is on unit and functional testing using pytest, the Python testing framework and tools. We will also explore the use of the application factory pattern, which allows us to instantiate separate versions of our application for the purposes of simplifying testing. Additionally, the use and creation of often-omitted (and forgotten) signals, provided by the Blinker library, are described in detail.
Chapter 5, Shutterbug, the Photo Stream API, builds a skeleton of an application around a JSON-based API, which is a requirement for any modern web application these days. One of the many API-based Flask extensions, Flask-RESTful, is used to prototype the API, where we also delve into simple authentication mechanisms for stateless systems and even write a few tests along the way. A short detour is made into the world of Werkzeug, the WSGI toolkit that Flask is built upon, to build a custom WSGI middleware that allows the seamless handling of URI-based version numbers for our nascent API.
Chapter 6, Hublot – Flask CLI Tools, covers a topic that is often omitted from most web application framework discussions: command-line tools. The use of Flask-Script is explained, and several CLI-based tools are created to interact with the data models of our application. Additionally, we will build our very own custom Flask extension that wraps an existing Python library to fetch the repository and issue information from the GitHub API.
Chapter 7, Dinnerly – Recipe Sharing, introduces the somewhat intimidating concept of the OAuth authorization flow that many large web applications, such as Twitter, Facebook, and GitHub, implement in order to allow third-party applications to act on behalf of the account owners without compromising basic account security credentials. A barebones data model is constructed for a recipe-sharing application that allows the so-called social sign in and the ability to cross-post the data from our application to the feeds or streams of the services that a user has connected. Finally, we will introduce the concept of database migrations using Alembic, which allow you to synchronize your SQLAlchemy model metadata with the schemas of the underlying relational database tables in a reliable manner.
What you need for this book
To work through most of the examples in this book, all you need is your favorite text editor or IDE, access to the Internet (to install the various Flask extensions, not to mention Flask itself), a relational database (one of SQLite, MySQL, or PostgreSQL), a browser, and some familiarity with the command line. Care has been taken to indicate when additional packages or libraries are required to complete the examples in each chapter.
Who this book is for
This book was created for the new Python developers who wish to dive into the world of web application development, or for the seasoned Python web application professional who is interested in learning about Flask and the extension-based ecosystem behind it. To get the most out of each chapter, you should have a solid understanding of the Python programming language, a basic knowledge of relational database systems, and fluency with the command line.
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: This will create a blank app1 environment and activate it. You should see an (app1) tag in your shell prompt.
A block of code is set