0

我将我的客户端项目文件夹和 django 项目文件夹分别放在根文件夹下。我将 django settings.py 配置为包含客户端的 app 文件夹以在开发和 dist 文件夹中提供服务,以由 collectstatic 收集

STATICFILES_DIRS = [os.path.join(BASE_DIR, "..", "Client/app"), # in development
                    os.path.join(BASE_DIR, "..", "Client/dist"), # to be gathered by collectstatic 
                   ]

Client/app包含用于开发的原始 js/css/html 文件,并 Client/dist包含用于生产的连接和 uglified 文件。

因为Client/app文件夹仅用于开发,所以我想在使用 collectstaic 命令时排除该文件夹。

但是,collectstatic -i app不排除 Client/app 文件夹。我试过了

collectstatic -i Client/app
collectstatic -i ../Client/app
collectstatic -i app*

但是,没有任何效果。

如何排除 django 目录之外的文件夹?

4

1 回答 1

1

你通常不会这样做。您将STATICFILES_DIR根据运行的环境定义不同的。

非常基本的想法:

if DEBUG:
    STATICFILES_DIRS = [os.path.join(BASE_DIR, "..", "Client/app")]
else:
    STATICFILES_DIRS = [os.path.join(BASE_DIR, "..", "Client/dist")]

DEBUG不过,我建议您为每个设置使用单独的配置文件,而不是依赖设置。然后在调用 Django 时选择运行哪个。

例如,假设这个文件树:

settings/
    ├ __init__.py     # empty
    ├ dev.py
    └ prod.py

…你可以这样启动 Django:

export DJANGO_SETTINGS_MODULE="settings.dev"
./manage.py runserver

为避免重复共享配置,请创建一个common.py并从两者中导入它dev.pyprod.py使用from settings.common import *(可能是允许导入 * 的唯一用例)。

虽然它在技术上没有回答您的问题,但我认为这是处理特定环境配置的更广泛问题的一种更简洁的方法。

于 2016-06-13T07:59:13.627 回答