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.0.tar.gz (3.5 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.0-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: starlette_flash-1.2.0.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","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.0.tar.gz
Algorithm Hash digest
SHA256 d296de62a8e59dade3334c9c4dfce6bcd07e8a833385efb1058440a241e2dde6
MD5 d1050eb42898893721031eadb355c2c7
BLAKE2b-256 f87e3e54a5dca36b6333c1926be7c9964d1ffcc9f4123dec0686ebd1c8b9b16a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: starlette_flash-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 4.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa164e8fe117ee8b1fb629a2d9edab0b91a1bda4170aca1f8f64775635400e38
MD5 e931f4fe5a35eca41879fe9fde37f846
BLAKE2b-256 9b68313b790ab656837e00380ca5a8198a25176bf2132e0a460f7fbde1ae6d37

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