跳转到主要内容

插件接口,用于列出和执行现有管理命令。

项目描述

Django Commands UI

该项目提供了一种解决方案,用于列出和执行Django项目中所有现有的管理命令。

需求

本项目需要Python 3.10或更高版本。

配置

按照以下步骤安装和配置它:

  1. 从PyPi安装依赖项。

    pip install django-commands-ui
    
  2. commands_ui添加为Django项目中的已安装应用。

  3. 如果您尚未这样做,您需要将celery添加到您的Django项目中。如果您之前没有使用过celery,可以遵循使用Django的初步步骤指南。

  4. 将管理命令的根位置添加到您的已安装应用中。例如,如果您的管理命令位于项目根目录中的commands文件夹中,您将添加your-project-name.commands到您的已安装应用。

  5. 添加以下所需设置

     # 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)
    
  6. 将包URL包含到您的基本urls文件中,如下所示

    path("jobs/", include("commands_ui.urls")),
    
  7. 创建表

    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 查看哈希值)

上传时间 源代码

构建分发

django_commands_ui-0.0.3-py3-none-any.whl (28.5 kB 查看哈希值)

上传时间 Python 3

由支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面