single |
===========
django-rich
===========
:alt: pre-commit
Extensions for using [Rich] with Django.
----
**Work smarter and faster** with my book [Boost Your Django DX] which
covers many ways to improve your development experience.
I wrote django-rich whilst working on the book!
----
Requirements
------------
Python 3.8 to 3.12 supported.
Django 3.2 to 5.1 supported.
Installation
------------
1. Install with **pip**:
.. code-block:: sh
python -m pip install django-rich
None of django-rich’s features are activated by default.
Follow the documentation below to use them.
Reference
---------
``django_rich.management.RichCommand``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A subclass of Django’s |BaseCommand|__ class that sets its
``self.console`` to a Rich |Console|__.
The Console uses the command’s stdout argument, which defaults to
``sys.stdout``.
Colourization is enabled or disabled according to Django’s ``--no-color
and --force-color`` flags.
.. |BaseCommand| replace:: BaseCommand
__
https://docs.djangoproject.com/en/stable/howto/custom-management-commands/#django.core.management.BaseCommand
.. |Console| replace:: Console
__ https://rich.readthedocs.io/en/stable/console.html
Use the features of ``self.console`` as you like:
.. code-block:: python
from time import sleep
from django_rich.management import RichCommand
class Command(RichCommand):
def handle(self, *args, **options):
self.console.print("[bold blue]Frobnicating widgets:[/bold
blue]")
with self.console.status("Starting...") as status:
for i in range(1, 11):
status.update(f"Widget {i}...")
sleep(1)
self.console.log(f"Widget {i} frobnicated.")
You can customize the construction of the Console by overriding the
make_rich_console class attribute.
This should be a callable that returns a Console, such as a
|functools.partial|__.
For example, to disable the default-on markup and highlighting flags:
.. |functools.partial| replace:: ``functools.partial``
__ https://docs.python.org/3/library/functools.html#functools.partial
.. code-block:: python
from functools import partial
from django_rich.management import RichCommand
from rich.console import Console
class Command(RichCommand):
make_rich_console = partial(Console, markup=False, highlight=False)
def handle(self, *args, **options):
...
``django_rich.test.RichRunner``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A subclass of Django's |DiscoverRunner|__ with colourized outputs and [nice
|