django collectstatic不排除外部文件夹

时间:2016-06-13 07:27:12

标签: python django collectstatic

我将客户端项目文件夹和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不会排除客户端/应用程序文件夹。我试过了

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

但是,没有任何效果。

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

1 个答案:

答案 0 :(得分: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.py并从prod.pyfrom settings.common import *导入它(可能是允许导入的唯一用例) *)。

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