2016-03-09 209 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')沒關係。

可能會幫助你!