Django 1.8和令人困惑的“静态文件”

时间:2015-05-15 15:48:25

标签: django django-staticfiles

我已经启动了一个新的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)

模板/基础/ 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/时,没有加载任何CSS。查看页面源代码,我看到CSS链接为<link href="/static/css/bootstrap.css" rel="stylesheet">的地方很好,但是当我尝试直接关注该链接时,它无法给我404错误。

现在,我已经设置了我的Apache服务器来直接提供文件,它们可以工作。所以,转到http://my_server_ip/static/css/bootstrap.css工作 - 所以我知道文件是可读的。只是他们没有在开发中工作。

我做错了什么?和我之前的许多人一样,我把头发拉出来了!

编辑 尝试直接访问该文件就是这样:

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.

它甚至没有显示其尝试过的地点列表,只是找不到该文件。

1 个答案:

答案 0 :(得分:8)

你错过STATICFILES_DIRS的's'。

此外,你不应该在你的BASE_DIR中包含你的git clone git@github.com:searls/jasmine-maven-plugin.git - 这可能最终会提供你所有的python代码,这是一个坏主意。