Skip to main content

Flash messages for Starlette framework.

Project description

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 %}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

starlette_flash-1.2.1.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

starlette_flash-1.2.1-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file starlette_flash-1.2.1.tar.gz.

File metadata

  • Download URL: starlette_flash-1.2.1.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for starlette_flash-1.2.1.tar.gz
Algorithm Hash digest
SHA256 856f5958b0adb44a1894d0750621d81e34bc596d606f52191da51af2585d524e
MD5 d6658798a93dd527f1da303a11a8efba
BLAKE2b-256 3d095bf791e7e09e5058927c491464aade6f629b44d6d5956203819070a3e548

See more details on using hashes here.

File details

Details for the file starlette_flash-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: starlette_flash-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for starlette_flash-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 efddb765fb65f3cb514239079b6223d518bfc64183210ff31ae9107279b6b345
MD5 0d3d980df695df022df636c86bb35f2c
BLAKE2b-256 07747ae5bf076a90b5930368d396ee8be524ff34e2cff9d51884dcb098bd2bef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page