python - 在 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。谢谢你。
解决方案
问题是由于默认的静态文件查找器设置:
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
将AppDirectoriesFinder
浏览您的INSTALLED_APPS
设置中列出的应用程序。如果 admin 中默认包含诸如 之类的文件admin/static/
,那么它们也会被collect_static
. 您的选择是:
- 从 INSTALLED_APPS 中删除应用程序(显然它们将不再工作,但它们也不会贡献静态文件)
- 如上所述添加 STATICFILES_FINDERS 设置,但不添加该
AppDirectoriesFinder
设置。然后 Django 只会收集你在 STATICFILES_DIRS 中明确提到的静态文件
推荐阅读
- php - Jquery Hide 在数据表的第二页中不起作用
- c++ - 在循环中第二次停止程序
- javascript - 如何在 GraphQL 中处理错误并发送响应
- javascript - Leafletjs 显示我的位置标记而不是硬编码的位置
- sql-server - SQL Server 2012 - 无法将带有 xmlns 的 XML 导入表中
- python - 我是否需要使用 OpenGL 在逐像素级别(Python)进行绘制。有没有办法在不使用代码库的情况下做这样的事情?
- java - 以编程方式扫描蓝牙设备在 android 6+ 中找不到任何东西
- flutter - 不良状态:Future 已完成调用,原因不明
- jquery - 每次尝试设置音频当前时间回到 0
- php - 从未选中的复选框传递值