仅针对某些应用程序收集静态信息

Collectstatic only for certain apps

我在 Django 项目中使用 Grunt 管理所有静态文件。我为我的项目设置了一个 gruntfile,它获取所有 js 和 css 文件,然后将它们合并并缩小到一个文件中。这些文件被复制到一个名为 /static/source 的目录中,在我的设置中我配置了这样的静态文件:

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static/build'),
)

STATIC_ROOT = os.path.join(PUBLIC_ROOT, 'static')

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
)

一切正常,我对此没有任何问题。问题是当我尝试使用 admin 应用程序时。如果我将 STATICFILES_FINDERS 添加到 django.contrib.staticfiles.finders.AppDirectoriesFinder,当我执行收集过程时,它还会从我的应用程序中复制所有静态文件(我用 Grunt 连接和缩小的源文件)。

有没有办法只收集某个应用的静态文件?

您可以使用 collectstatic 命令的 i 标志来忽略来自应用程序的静态文件。

例如:python manage.py collectstatic -i app -i an_other_app

如果你使用 g运行t,你可以使用 grunt-exec 插件来自动 运行 这个命令。