跳转到主要内容

使用Rich扩展Django的功能。

项目描述

https://img.shields.io/github/actions/workflow/status/adamchainz/django-rich/main.yml.svg?branch=main&style=for-the-badge https://img.shields.io/badge/Coverage-100%25-success?style=for-the-badge https://img.shields.io/pypi/v/django-rich.svg?style=for-the-badge https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge pre-commit

扩展以使用Rich与Django一起。


工作更智能、更快,我的书提升您的Django开发体验涵盖了提高开发体验的多种方式。我在写书时创建了django-rich!


需求

支持Python 3.8到3.12。

支持Django 3.2到5.1。

安装

  1. 使用

    pip

    安装

    python -m pip install django-rich

django-rich的所有功能默认均未激活。请按照下面的文档进行操作以使用它们。

参考

shell命令集成

django-rich具有Django内置

shell命令

的扩展版本,这启用了

Rich的漂亮打印

。要启用此功能,请将

django_rich

添加到您的

INSTALLED_APPS

设置中

INSTALLED_APPS = [
    ...,
    "django_rich",
    ...,
]

此功能仅影响Python和bypthon解释器,不影响IPython。有关IPython支持,请参阅Rich文档

django_rich.management.RichCommand

这是Django的BaseCommand类的子类,将其self.console设置为Rich的Console。该Console使用命令的stdout参数,默认为sys.stdout。颜色显示根据Django的--no-color--force-color标志启用或禁用。

按照您的喜好使用self.console的功能

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.")

您可以通过覆盖make_rich_console类属性来自定义Console的构建。这应该是一个返回Console的可调用对象,例如functools.partial。例如,要禁用默认启用的markuphighlighting标志

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

这是一个Django的DiscoverRunner子类,具有彩色输出和友好的堆栈跟踪渲染

https://raw.githubusercontent.com/adamchainz/django-rich/main/img/RichRunner.png

要使用此类,将您的TEST_RUNNER设置指向它

TEST_RUNNER = "django_rich.test.RichRunner"

您也可以将其作为进一步自定义的基类。由于仅修改了输出,它应该与其他类很好地结合。

测试运行器提供以下功能

  • 尽可能对输出进行颜色化。这包括Rich的默认高亮显示,将格式化数字、引号字符串、URL等。

  • 失败和错误使用Rich的traceback渲染。这显示每个帧的源代码和局部值。每个帧还显示文件名和行号,在许多终端上,您可以通过点击链接跳转到该位置的文件。

  • 当使用--debug-sql--pdb标志时,输出也会进行颜色化。

  • Django的DiscoverRunner的所有其他标志将继续按正常方式工作。

CI上的输出宽度

当测试在您的CI系统上运行时,您可能会发现输出宽度不足以正确显示堆栈跟踪。这是因为Rich尝试自动检测终端尺寸,如果失败,它将默认为80个字符宽。您可以使用COLUMNS环境变量(如Python的shutil.get_terminal_size()函数)来覆盖此默认值

$ COLUMNS=120 ./manage.py test

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源代码发行版

django_rich-1.11.0.tar.gz (61.1 kB 查看散列)

上传于

构建分发

django_rich-1.11.0-py3-none-any.whl (8.8 kB 查看散列值)

上传于 Python 3

由以下支持