无法使用 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 manage.py runserver 在第二个请求后挂起(间歇性)
python Django命令杀死runserver。在Docker容器中使用Djanog并在外部使用runserver时很方便。