无法使用 Django runserver 提供静态文件

Posted

技术标签:

【中文标题】无法使用 Django runserver 提供静态文件【英文标题】:Unable to serve static files with Django runserver 【发布时间】:2016-10-13 15:09:46 【问题描述】:

我的 settings.py 文件中有这个配置

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
    'dashboard',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.core.context_processors.tz',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.request',
    'social.apps.django_app.context_processors.backends',
    'social.apps.django_app.context_processors.login_redirect',
)

STATIC_URL = '/static/'

STATIC_ROOT = '/home/workspace/app-toscana/django/djangoapptoscana/djangoapptoscana/static'

我的 Django 项目位于以下目录:/home/workspace/app-toscana/django/djangoapptoscana

在这个目录下项目结构如下

.
├── dashboard
│   ├── admin.py
│   ├── admin.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── templates
│   │   ├── index.html
│   │   ├── loginpage.html
│   │   ├── registerpage.html
│   │   └── startpage.html
│   ├── tests.py
│   ├── views.py
│   └── views.pyc
├── djangoapptoscana
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── static
│   │   └── admin
│   │       ├── css
│   │       │   ├── ...
│   │       ├── img
│   │       │   ├── ...
│   │       └── js
│   │           ├── ...
│   │   └── bootstrap
│   │       ├── css
│   │       │   ├── bootstrap.css
│   │   └── ....
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
└── manage.py

这是我的 dashboard/template/index.html

的代码快照
% load staticfiles %
...
<link href="% static 'bootstrap/css/bootstrap.css' %" rel="stylesheet" type="text/css" />
...

当我尝试使用 python manage.py runserver 0.0.0.0:8000 测试项目时,我无法提供接收 404 错误的静态文件。我正在运行 Django 1.6.1 版本. 有什么建议吗?谢谢!

【问题讨论】:

尝试将您的链接指向:% static 'admin/css/bootstrap.css' % 没什么!看一下编辑后的树:bootstrap 目录已经是正确的路径 【参考方案1】:

请尝试在settings.py 文件中指定STATICFILES_DIRS

STATICFILES_DIRS = '/home/workspace/app-toscana/django/djangoapptoscana/djangoapptoscana/static'

STATIC_ROOT./manage.py collectstatic 将收集用于部署的静态文件的目录的绝对路径。在以下路径创建static_cdn文件夹。

STATIC_ROOT = '/home/workspace/app-toscana/django/static_cdn'

This 堆栈溢出链接和this 应该可以帮助您。

【讨论】:

谢谢!我忘记了 STATICFILES_DIRS

以上是关于无法使用 Django runserver 提供静态文件的主要内容,如果未能解决你的问题,请参考以下文章

Django manage.py runserver无法打开浏览器

加载 Django runserver 提供的静态文件时如何修复 cors 错误

django源码分析——本地runserver分析

django manage.py runserver 在第二个请求后挂起(间歇性)

python Django命令杀死runserver。在Docker容器中使用Djanog并在外部使用runserver时很方便。

在 runserver 中导入但不在 wsgi 上的模板标签