Skip to main content

Starlette-Flash

Flash messages for Starlette framework.

PyPI CI GitHub Libraries.io dependency status for latest release PyPI - Downloads GitHub Release Date

Installation

Install starlette_flash using pip or uv:

pip install starlette_flash
# or
uv add starlette_flash

Quick start

See example application in examples/ directory of this repository.

Setup

Flash messages are stored in the session. Add SessionMiddleware to your app:

from starlette.applications import Starlette
from starlette.middleware import Middleware
from starlette.middleware.sessions import SessionMiddleware

app = Starlette(
    middleware=[Middleware(SessionMiddleware, secret_key="your-secret-key")],
)

Flashing messages

To flash a message use the flash helper.

from starlette_flash import flash


def index_view(request):
    flash(request).add('This is a message.', 'success')

Using helpers

Shorthand helpers that set the category automatically:

  • success
  • error
  • info
  • warning
  • debug
from starlette_flash import flash


def index_view(request):
    flash(request).success('Saved.')
    flash(request).error('Something went wrong.')
    flash(request).info('Did you know?')
    flash(request).warning('Proceed with caution.')
    flash(request).debug('Value was 42.')

Helpers return self, so calls can be chained:

flash(request).info('Step 1 done.').success('All steps complete.')

Reading messages

To get all flash messages without removing them from the session, use all():

from starlette_flash import flash


def index_view(request):
    flash(request).success('This is a message.')

    messages = flash(request).all()
    print(messages)  # [{'category': 'success', 'message': 'This is a message.'}]

Consuming messages

consume() returns all messages and clears the bag in one call:

from starlette_flash import flash


def index_view(request):
    flash(request).success('This is a message.')

    messages = flash(request).consume()
    print(messages)  # [{'category': 'success', 'message': 'This is a message.'}]
    print(flash(request).all())  # [], messages have been consumed

Iterating the bag also consumes messages:

from starlette_flash import flash


def index_view(request):
    flash(request).success('This is a message.')

    for message in flash(request):
        print(message)
    print(flash(request).all())  # [], messages have been consumed

Template integration

get_messages_for_template is a convenience function that consumes and returns all messages, suitable for use in Jinja2 globals or context processors:

from starlette_flash import get_messages_for_template

templates.env.globals['get_flashed_messages'] = get_messages_for_template

Then in your template:

{% for message in get_flashed_messages(request) %}
    <div class="alert alert-{{ message.category }}">{{ message.message }}</div>
{% endfor %}

Metadata

Release files for starlette_flash 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for starlette_flash 1.2.1
File Size Uploaded
starlette_flash-1.2.1.tar.gz 3.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for starlette_flash 1.2.1
File Interpreter ABI Platform
starlette_flash-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 8.8 kB

Release files / starlette_flash-1.2.1.tar.gz

Download URL starlette_flash-1.2.1.tar.gz
Size 3.9 kB
Tags Source
SHA-256 checksum
How to use checksums
856f5958b0adb44a1894d0750621d81e34bc596d606f52191da51af2585d524e
BLAKE2b-256 checksum
How to use checksums
3d095bf791e7e09e5058927c491464aade6f629b44d6d5956203819070a3e548
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / starlette_flash-1.2.1-py3-none-any.whl

Download URL starlette_flash-1.2.1-py3-none-any.whl
Size 4.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
efddb765fb65f3cb514239079b6223d518bfc64183210ff31ae9107279b6b345
BLAKE2b-256 checksum
How to use checksums
07747ae5bf076a90b5930368d396ee8be524ff34e2cff9d51884dcb098bd2bef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.2.1 This release

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page