首页 > 解决方案 > 在 django 中使用 collectstatic 时出现意外的目录和文件

问题描述

这是我的 django 项目,有两个应用程序;民意调查和研究

这是我的静态文件设置的设置。

STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,"study","static","HScard"),
)
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")

我预计 shell 中的“python manage.py collectstatic”只会将静态文件从“study/static/HSCard”中复制到“staticfiles”(由于上面的 STATICFILES_DIRS)。

但是,“collectstatic”复制了下面的意外文件。

在此处输入图像描述

为什么将 admin 和 polls 中的文件复制到静态文件?除了 admin 文件夹中的文件来自这里(一个例子):

Copying 'C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\admin\static\admin\js\vendor\xregexp\xregexp.min.js'

为什么'collectstatic'会这样工作,我该如何按预期修复它?

django 使用的版本是 2.0.7。谢谢你。

标签: pythondjango

解决方案


问题是由于默认的静态文件查找器设置:

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

AppDirectoriesFinder浏览您的INSTALLED_APPS设置中列出的应用程序。如果 admin 中默认包含诸如 之类的文件admin/static/,那么它们也会被collect_static. 您的选择是:

  1. 从 INSTALLED_APPS 中删除应用程序(显然它们将不再工作,但它们也不会贡献静态文件)
  2. 如上所述添加 STATICFILES_FINDERS 设置,但不添加该 AppDirectoriesFinder设置。然后 Django 只会收集你在 STATICFILES_DIRS 中明确提到的静态文件

推荐阅读