通过 Django 管理站点安装 Django 应用程序,就像 WordPress 中的插件一样

shi*_*i42 6 python django module

我想在 Django 中实现一个模块管理器,可以通过 django 管理界面安装第三方模块(无需更改主项目的代码库)。或者它也可以是运行在 django 之上的服务。

这些模块应该具有与 django 应用程序相同的功能。例如,定义模型和视图、进行迁移以及与其他应用程序交互。与 Wordpress 的插件管理器的工作方式类似。

有没有好的方法可以做到这一点?(有什么理由我不应该这样做吗?)

Gon*_*ica 2

什么是 Django 应用程序?根据Django 包

用于构建项目的小组件。应用程序是通过放置在settings.INSTALLED_APPS 中安装的任何内容。


一般来说,以下是让应用程序在 Django 中运行的步骤

  1. 安装应用程序

    pip install app
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在某人的应用程序中注册该应用程序settings.py

    INSTALLED_APPS = [
        ...
        'app',
        ...
    ]
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在某些情况下,他们需要同步数据库。就是这样的情况social-auth-app-django。在这里你也必须这样做

    python manage.py migrate
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在其他一些情况下,它们需要特定版本的 Python、Django 等,因此也必须考虑这一点。Django REST 框架就是这种情况,它需要

    Python 3.6+
    Django 4.1, 4.0, 3.2, 3.1, 3.0
    
    Run Code Online (Sandbox Code Playgroud)
  5. 应用程序也可能依赖于某些 Python 库。然后,人们还必须安装它们。


对于其基本版本,人们想要创建一个位置,其中包含一个用于安装应用程序的按钮以及一个用于存储应用程序的模型。该模型将跟踪特定的变化BooleanField

更准确地说,由于我们现在知道某些应用程序需要数据库同步,因此应用程序模型将具有requires_db_sync = BooleanField(default=False). 那么,如果这是真的,那么在安装该应用程序时,人们将至少需要运行步骤 1、2 和 3。


人们最终会想要对现有应用程序进行彻底的分析,并了解不同的可能变化(依赖性、需要数据库同步等)。


我也使用 WordPress,这是几年前我想到的一个想法。我没有追求它,因为对于大多数应用程序,我仍然必须转到代码并进行各种配置。为了解决这个问题,WordPress 插件(例如 )WPForms附带了进行该配置的页面。由于此类用于配置的 Django 应用程序配置页面尚不存在,因此也必须创建它们。此外,如果有一个值得信赖的机构拥有标准来验证应用程序是否适合该系统,那就太好了。