具有 DEBUG True 的 Django 运行服务器提供错误的静态文件

Django runserver with DEBUG True serving the wrong static files

尝试使用 Django 1.10 通过运行服务器服务器静态文件进行开发

我的 INSTALLED_APPS 中有 'django.contrib.staticfiles' 以及以下相关设置:

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
    "django.contrib.staticfiles.finders.FileSystemFinder",
)

STATICFILES_DIRS = [
    path('node_modules'),  # resolves to `node_modules/` in the project root
]
STATIC_URL = '/static/'
STATIC_ROOT = path('static')  # resolves to `path/` in the project root

这对 collectstatic 很好用,直接通过 NginX 也很好用。

然而,对于 runserver + DEBUG=True,我希望 Django 网络服务器从 static/ 文件夹提供服务,但它是从 node_modules/ 文件夹提供服务。

如果我 remove/rename node_modules/ 然后我得到 404s 静态文件。

静态文件是通过复制收集的(不是符号链接)。

我正在使用 Django 频道,它也可以劫持所有内容吗?

这就是 staticfiles 应用程序所做的:它包装了内置的 运行server 命令以直接从源目录提供静态文件,这样就不需要 运行 collectstatic发展。

Edit 您可以通过 运行ning 运行server 和 --nostatic flag, and point the static URL 在您的 STATIC_ROOT 手动禁用自动处理:

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += [
        static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    ]