Book Image

Mastering Flask

By : Jack Stouffer
Book Image

Mastering Flask

By: Jack Stouffer

Overview of this book

Starting from a simple Flask app, this book will walk through advanced topics while providing practical examples of the lessons learned. After building a simple Flask app, a proper app structure is demonstrated by transforming the app to use a Model-View-Controller (MVC) architecture. With a scalable structure in hand, the next chapters use Flask extensions to provide extra functionality to the app, including user login and registration, NoSQL querying, a REST API, an admin interface, and more. Next, you’ll discover how to use unit testing to take the guesswork away from making sure the code is performing as it should. The book closes with a discussion of the different platforms that are available to deploy a Flask app on, the pros and cons of each one, and how to deploy on each one.
Table of Contents (20 chapters)
Mastering Flask
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Using the session


One way to create authentication in Flask is to use the session object. The session object is an object in Flask that creates an easy way for the server to store information in the user's browser with cookies. The stored data is cryptographically signed with the app's secret key. If the user attempts to modify the cookie, then the sign will no longer be valid and the cookie will not be read.

The session object has the same API as a dict object. To add data to it, simply use this:

session['key'] = data

To retrieve data, use this:

session['key']

To log a user in, a username key will be added to the session and set to the username of the current user.

@main_blueprint.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()

    if form.validate_on_submit():
        # Add the user's name to the cookie
        session['username'] = form.username.data

    return render_template('login.html', form=form)

To log the user out, the key can be popped from the session...