0

尝试使用 Django 1.10 通过 runserver 为开发服务器提供静态文件

我有'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/,那么我会得到静态文件的 404。

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

我正在使用可能劫持一切的 Django 频道?

4

1 回答 1

2

这就是 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)
    ]
于 2016-11-16T21:21:24.950 回答