Django runserver与DEBUG True提供错误的静态文件

时间:2016-11-16 21:16:31

标签: django django-staticfiles django-channels django-1.10

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

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

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/文件夹提供服务。

如果我删除/重命名node_modules/,那么我会获得404s静态文件。

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

我使用Django频道也可能劫持一切?

1 个答案:

答案 0 :(得分:1)

这就是staticfiles应用程序的作用:它包装内置的runserver命令直接从源目录提供静态文件,因此不需要在开发中运行collectstatic。

编辑您可以通过运行带有--nostatic标记的runserver来禁用自动处理,并将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)
    ]