2016-03-09 211 views
1

我似乎无法包含我的引导程序css文件出于某种原因。尤其是对Python和Django来说我很新,所以我肯定做错了什么。Django静态文件(css)不起作用

  • 的Django 1.9.2

阅读 “静态文件” 的official Django explanation管理后我绝对零聪明:(这里是我的项目文件夹层次:

/projectname/ 
    /appname/ 
     /static/ 
     | /appname/ 
     |  /css/ 
     |  | bootstrap.min.css 
     |  | custom.css 
     |  /img/ 
     |  /js/ 
     | 
     /templates/ 
      /includes/ 
       head.html 
       footer.html 
      index.html 
      base.html 

我从基础开始,所以我忽略了head.html并尝试使用base.html,如下所示:

<title>{% block title %}{% endblock %}</title> 

<!-- Bootstrap core CSS --> 
{% load staticfiles %} 
<link href="{% static 'static/appname/css/bootstrap.min.css' %}" rel="stylesheet"> 

没有运气。这里是我的设置文件:

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
] 
... 

STATIC_URL = '/static/' 
MEDIA_URL = '/media/' 
STATIC_ROOT = os.path.join(BASE_DIR, 'static') 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
STATICFILE_DIRS ='/users/edchigliak/documents/projects/projectname/appname/static/' 

由于FAS按照我的理解,它可能有一个“全局”“静态文件的位置”,这所有的项目都可以使用,而且“每个应用程序”“静态文件位置”只能由其所在的基础目录内的应用程序使用。

任何帮助表示赞赏!

编辑:

这是我的urls.py配置:

from django.conf.urls import url 
from django.contrib import admin 
from budgeteer.views import hello, hours_ahead, current_datetime 

urlpatterns = [ 
url(r'^admin/', admin.site.urls), 
url(r'^hello/$', hello), 
url(r'^index/$', current_datetime), 
url(r'^time/plus/(\d{1,2})/$', hours_ahead), 
] 
+0

删除'静态/ appname/css/bootstrap.min.css'中的静态(或者静态/ appname,我不是100%确定) – Benjamin

+0

也许如果你不在调试模式,你必须运行collectstatic manage.py – Benjamin

+0

啊,你看,我读到了'collectstatic',但我讨厌做一些我不明白的东西。是这样,这个命令从我定义的位置获取文件并将它们放在其他地方(副本),然后将它们包含在模板中?这有点令人困惑...... –

回答

0

我快速的猜测是,你是一个级别的。您的static目录嵌套在appname之下。尝试将它向上移动并直接在浏览器中访问资源(http://example.com/static/appname/css/bootstrap.min.css

我从来没有做过特定于应用程序的资源,所以如果这是目标,我的道歉。

+0

我认为在应用程序中使用静态目录是正常的事情从django doc:“现在我们可能能够将我们的静态文件直接放在my_app/static /中(而不是创建另一个my_app子目录),但它实际上是一个糟糕的主意。“ – Benjamin

0

我想你需要添加下列网址:

from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = [ 
    # ... the rest of your URLconf goes here ... 
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

除非你Django的服务器上运行,并提供您的静态文件。

根据你的Django文档,你的应用程序结构是确定的。

当您将设置您的prod并通过Apache/Nginx/etc启动静态服务时,您将需要运行collectstatic。 现在它不需要。

+0

我正在使用Django附带的本地轻量级服务器,只是为了获得感觉:)。 Spasiba bolshoe! –

+0

哈,np!如果它帮助你,请接受答案:) –

+0

不幸的是,不工作:/ –

0

如果您的静态链接仅以appname开头,该怎么办?

即代替

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

请尽量

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

据我所知,在{% static %}字符串是路径的静态文件夹内的静态文件。

我没有足够的评论,所以我在这里留下我的猜测。

+0

不幸的是,遗憾的是仍然没有工作。这里是我从终端得到''runserver:[10/Mar/2016 08:14:37]“GET/index/HTTP/1.1”200 4872 Not Found:/ index/js/ie-emulation-modes- warning.js 未找到:** /索引/ ** CSS/IE10视口-bug的workaround.css 未找到:/index/css/jumbotron.css ... 未找到:/距离/ JS/bootstrap.min.js 未找到:/assets/js/ie10-viewport-bug-workaround.js ...' –

0

我有类似的问题(Django 1.10)。层次:

myapp 
    ... 
    myapp 
     ... 
    blog 
     migrations 
     templates 
     ... 
    static 
     blog 
     style.css 

所以,如果我添加<link href="{% static 'blog/css/bootstrap.min.css' %}" rel="stylesheet">style.css位于DIR '博客/ CSS')的所有样式将无法正常工作。

但是当我删除'css'时:<link href="{% static 'blog/bootstrap.min.css' %}" rel="stylesheet">style.css位于dir'blog')没关系。

可能会帮助你!