插件接口,用于列出和执行现有管理命令。
项目描述
Django Commands UI
该项目提供了一种解决方案,用于列出和执行Django项目中所有现有的管理命令。
需求
本项目需要Python 3.10或更高版本。
配置
按照以下步骤安装和配置它:
-
从PyPi安装依赖项。
pip install django-commands-ui
-
将
commands_ui
添加为Django项目中的已安装应用。 -
如果您尚未这样做,您需要将celery添加到您的Django项目中。如果您之前没有使用过celery,可以遵循使用Django的初步步骤指南。
-
将管理命令的根位置添加到您的已安装应用中。例如,如果您的管理命令位于项目根目录中的
commands
文件夹中,您将添加your-project-name.commands
到您的已安装应用。 -
添加以下所需设置
# Celery app name. COMMANDS_UI_CELERY_APP = "" # Working celery queue name for delayed jobs. COMMANDS_UI_DELAYED_JOBS_QUEUE = "" # Working celery queue name for standard jobs. COMMANDS_UI_JOBS_QUEUE = "" # Tuple of compiled regexes to extract the runnable commands from. # By default, all commands from all installed apps are extracted. COMMANDS_UI_JOB_APPS = (re.compile(r".*"),) # Primary database identifyer, not the replica one. DATABASE_PRIMARY = getattr(settings, "DATABASE_PRIMARY", "default") # Define if the current environment is a cron environment. CRON_ENVIRONMENT = getattr(settings, "CRON_ENVIRONMENT", False)
-
将包URL包含到您的基本urls文件中,如下所示
path("jobs/", include("commands_ui.urls")),
-
创建表
python manage.py migrate commands_ui
建议覆盖base.html
,以便可自定义外观,因为所有django-commands-ui
模板都从此扩展。
文档
实现管理命令作业
在django-commands-ui
中实现有效管理命令作业的唯一需要的事情是扩展现有的JobBasedCommand。此类添加了一些默认参数(例如--job-id
)。
如何使用此类的示例
from typing import Any
from commands_ui import management_commands
from django.core.management.base import CommandParser
# Extend the JobBasedCommand class
class Command(management_commands.JobBasedCommand):
def handle(self, *args: Any, **options: Any) -> None:
# Any time `self.print` is used, the message will be added to both standard output and
# Job output.
self.print("Starting")
for i in range(0, 20):
self.print(i)
self.print("Finishing")
命令分组
您可以通过向管理命令类添加一个interface_name
类属性来根据类型对命令进行分组。这将在UI中将具有相同interface_name
的所有命令分组在一起。例如,您可以通过将interface_name = "cron"
添加到所有cron作业中来将cron作业分组在一起。
from typing import Any
from commands_ui import management_commands
from django.core.management.base import CommandParser
# Extend the JobBasedCommand class
class Command(management_commands.JobBasedCommand):
interface_name = "cron"
def handle(self, *args: Any, **options: Any) -> None:
...
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
django_commands_ui-0.0.3.tar.gz (24.0 kB 查看哈希值)