在Django中使用collectstatic时出现意外的目录和文件

时间:2018-07-16 07:16:56

标签: python django

This is my django project,有两个应用程序;投票和研究

这是我的静态文件设置。

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

我希望外壳程序中的“ python manage.py collectstatic”仅将静态文件从“ study / static / HSCard”中复制到“ staticfiles”(由于上述STATICFILES_DIRS)。

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

enter image description here

为什么将admin和poll中的文件复制到staticfiles?除了admin文件夹中的文件来自此处(一个示例):

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

为什么'collectstatic'如此工作,并且如何按预期的方式修复它?

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

1 个答案:

答案 0 :(得分:0)

问题是由于默认的Staticfiles Finders设置造成的:

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

AppDirectoriesFinder将浏览INSTALLED_APPS设置中列出的应用。如果有admin/static/之类的文件(默认情况下包含在管理员中),那么collect_static也将找到它们。您可以选择以下任一方式:

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