Django 1.8 和令人困惑的问题 "Static Files"

Django 1.8 and the ever confusing "Static Files"

我启动了一个新的 Django 1.8 项目,但在尝试在开发环境中提供静态文件时遇到了瓶颈。我很确定我已经明确地遵循了文档,但它就是行不通。

Settings.py

STATICFILES_DIR = (                                                                 
  os.path.join(BASE_DIR, 'static/'),                                                
  BASE_DIR                                                                          
)                                                                                                                                                                 

STATIC_URL = '/static/'                                                             
STATIC_ROOT = '/srv/www/cpm2/static/'    

urls.py:

from django.conf.urls import include, patterns, url 
from django.conf import settings
from django.conf.urls.static import static·
from django.contrib import admin
from django.views.generic import TemplateView

urlpatterns = [ 
    url(r'^admin/', include(admin.site.urls)),
    url(r'^test/', TemplateView.as_view(template_name="basics/base.html")),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

templates/basics/base.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">


    {% load staticfiles %}
    <link href="{% static 'css/bootstrap.css' %}" rel="stylesheet">

  </head>


  <body>
      <h1>Hello, world!</h1>

  </body>
</html>

当我去http://my_server_ip:8000/test/时none的CSS被加载了。查看页面源代码,我看到 CSS link 是 <link href="/static/css/bootstrap.css" rel="stylesheet"> 的地方很好,但是当我尝试直接遵循 link 时,它没有给我一个 404错误。

现在,我已经将我的 Apache 服务器设置为直接提供这些文件,它们可以正常工作。所以,转到 http://my_server_ip/static/css/bootstrap.css 有效 - 所以我知道这些文件是可读的。只是他们在开发中不起作用。

我做错了什么?和我之前的许多人一样,我正在拔头发!

EDIT 尝试直接访问文件给我这个:

Page not found (404)
Request Method: GET
Request URL:    http://my_server_ip:8000/static/css/bootstrap.css
Raised by:  django.views.static.serve
'css/bootstrap.css' could not be found
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

它甚至不显示其尝试过的位置列表,只是找不到文件。

您缺少来自 STATICFILES_DIRS 的 's'。

此外,您不应在该设置中包含您的 BASE_DIR - 这可能最终会为您的所有 python 代码提供服务,这不是一个好主意。