Cheatsheet#

Basic App#

from quart import Quart, render_template, redirect
from quart_uploads import Bcrypt

app = Quart(__name__)

bcrypt = Bcrypt(app)

@app.route("/register")
async def register():
    if request.method == 'POST':
        form = await request.form
        password = form.get('password')
        pw_hash = await bcrypt.async_generate_password_hash(password)
        return redirect(url_for('login'))
    return await render_template('register.html')

@app.route('/login', methods=['GET', 'POST'])
async def login():
    """User login route."""
    if session.get('logged_in'):
        await flash("You are already logged in")
        return redirect(url_for('index'))
    if request.method == 'POST':
        form = await request.form
        username = form.get('username')
        password = form.get('password')
        pw_hash = app.config['ADMIN_PASSWORD_HASH']
        res = await bcrypt.async_check_password_hash(pw_hash, password)
        if (username == app.config['ADMIN_USERNAME'] and res):
            session['logged_in'] = True
            await flash("Successfully logged in", "success")
            return redirect(url_for('index'))
        else:
            await flash("Those credentials were incorrect", "danger")
    return await render_template('login.html')

Large Applications#

yourapplication/extensions.py#
from quart_bcrypt import Bcrypt

bcrypt = Bcrypt()
youapplication/app.py#
from quart import Quart
from .extensions import bcrypt

def create_app() -> Quart:
    app = Quart(__name__)

    bcrypt.init_app(app)

    # Other app registration here.

    return app

Sync Helpers#

from quart_bcrypt import generate_password_hash, check_password_hash

password = 'WowThisIsAwesome100'

pw_hash = generate_password_hash(password) # Generate the password hash

if check_password_hash(pw_hash, password):
    # Then do something.

Async Helpers#

from quart_bcrypt import async_generate_password_hash, async_check_password_hash

password = 'WowThisIsAwesome100'

pw_hash = await async_generate_password_hash(password) # Generate the password hash

if await async_check_password_hash(pw_hash, password):
    # Then do something.