尝试通过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 webserver从static/
文件夹服务,但它是从node_modules/
文件夹服务。
如果我删除/重命名node_modules/
,然后我得到404静态文件。
静态文件是通过copy(而不是symlink)收集的。
我正在使用Django通道,这可能会劫持一切?
这就是staticfiles应用程序所做的:它包装内置的runserver命令来直接从源目录提供静态文件,因此不需要在开发中运行collectstatic。
编辑您可以通过运行带有--nostatic
标志的runserver来禁用自动处理,并手动将静态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)
]