递归应用依赖django

递归应用依赖django,django,python-3.x,Django,Python 3.x,Django的INSTALLED_APPS是设置文件中的一个列表,最终由wsgi应用程序的devops girl/guy负责 但是,在创建应用程序时,我经常使用其他应用程序的模板和TemplateTag,例如django-bootstrap4。考虑一个简单的BooTrasP4和黄油APP,它只提供这个模板: bs4wb/templates/bs4wb/base.html {%extends“bootstrap4/bootstrap4.html”%} {%block bootstrap4_extr

Django的
INSTALLED_APPS
是设置文件中的一个列表,最终由wsgi应用程序的devops girl/guy负责

但是,在创建应用程序时,我经常使用其他应用程序的模板和TemplateTag,例如django-bootstrap4。考虑一个简单的BooTrasP4和黄油APP,它只提供这个模板:

bs4wb/templates/bs4wb/base.html

{%extends“bootstrap4/bootstrap4.html”%}
{%block bootstrap4_extra_head%}
确认(‘用黄油?!’);
{%endblock bootstrap4_extra_head%}
devops安装并添加到已安装的应用程序是不够的
bs4wb
,他们也需要对
django-bootstrap4
执行同样的操作,此外,他/她还需要跟踪我从
django-bootstrap4
升级到django-bootstrap5`或其他版本时使用的版本。也就是说,我需要记录一个可以更改的额外步骤

如何指定递归安装的应用程序?是否有类似应用程序联盟的东西?例如(显然是难看的语法,对不起):

export('bs4wb',app_by_union(['bootstrap4','bs4wb']))
每当
bs4wb
添加到
已安装的应用程序中时,哪个会将
bootstrap4
bs4wb
彼此相邻插入


或者,如果未将
bootstrap4
添加到已安装的应用程序中,我是否应该提出一个例外,说明应该添加它。

作为应用程序开发人员,您通常使用django来确保环境符合您的要求

在您的情况下,您将检查已安装的应用程序中是否包含其他应用程序,如果没有,则添加错误

看起来可能是这样(未经测试):


如果您的需求随新版本而变化:请调整检查。

您使用的是virtualenv吗?一旦你安装了所有东西,你还需要做什么
pip freeze
?正如您所描述的,您将在本地计算机上安装所有这些—pip freeze>requirements.txt,然后部署的任何人都可以使用
pip install-r requirements.txt
进行安装。问题不在于需求是否安装在站点包中,问题是它们是否按正确的顺序添加到已安装的应用程序中。为什么如果有人投了反对票,他们不评论原因?如果你想让我继续问一些平庸的问题,请不要继续解释。你把这个代码放在哪里?它是否对每个http请求都运行?不,我们通常将其放入app_root/checks.py中-django不会自动加载此文件,因此我们还将其包含在app_root/uuu init_uu.py:
中。进口支票
from django.conf import settings
from django.core.checks import Error, register

@register()
def bootstrap4_check(app_configs, **kwargs):
    errors = []
    if not 'django-bootstrap4' in settings.INSTALLED_APPS:
        errors.append(
            Error('django-bootstrap4 needs to be in INSTALLED_APPS')
        )
    return errors