2012-06-14 66 views
3

問題完全是這樣的,之前我已經問過了,我已經閱讀了所有這些問題,並試圖理解關於該主題的官方django文檔,但我仍然努力使用靜態文件虛擬服務器。更具體地講我只是試圖讓我的模板,Base.html,使用base.css.在django虛擬服務器上使用靜態文件

我的文件夾結構如下所示:

manage.py 
static/CSS/base.css 
VergeGreenITEvent_Website/settings.py 
VergeGreenITEvent_Website/views.py ect 
VergeGreenITEvent_Website/Webpage_Templates/Base.html 

(目前沒有app文件夾,因爲我下面的「Django的書」的學習,並沒有得到該位)

完整的settings.py在這裏可以查看:http://pastebin.com/JB3mKRcJ

在我的基地.html模板我現在有代碼:

<head> 
    <title>Verge Green IT</title> 
    {% load static %} 

    <link rel="stylesheet" href="{% static "CSS/base.css" %}" type="text/css" /> 
</head> 

CSS仍未應用。 enter image description here你能幫我弄清楚我做錯了什麼嗎?我會非常感激。

我正在使用最新版本的Django。 (1.4)


urls.py:

from django.conf.urls import patterns, include, url 
from django.conf import settings 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
import views 

urlpatterns = patterns('', 

    url(r'^$', views.Home), 

) 

if settings.DEBUG: 
    urlpatterns += staticfiles_urlpatterns() #this serves static files and media files. 
    #in case media is not served correctly 
    urlpatterns += patterns('', 
     url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
      'document_root': settings.MEDIA_ROOT, 
      }), 
    ) 
+1

STATIC_URL應該是「/ static /」我會避免在目錄命名中使用大寫字母,並且請張貼您的網址 –

+0

@ArgsKwargs,謝謝將其更改爲/ static /。你的意思是文件urls.py?好的!但我不確定它會告訴你很多?正確的視圖加載正常,HTML都在那裏,它只是沒有造型。 – Holly

+1

在** STATICFILES_DIRS =(...)**添加**打印STATICFILES_DIRS **之後,您的設置在運行項目時會顯示什麼。在您的模板中,** {%static「CSS/base.css」%} **生成的鏈接是什麼? –

回答

3

如果你使用Django 1.4,那麼我會用靜態標籤:

{% load static %} 

<link rel="stylesheet" href="{% static "CSS/base.css" %}" type="text/css" /> 

你可能需要在此網址開發文件通過django提供

if settings.DEBUG: 
    urlpatterns += staticfiles_urlpatterns() #this serves static files and media files. 
    #in case media is not served correctly 
    urlpatterns += patterns('', 
     url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
      'document_root': settings.MEDIA_ROOT, 
      }), 
    ) 

同樣在你的設置中,通常的做法是避免硬編碼的位置,下面是一個例子(順便說一下你的設置中有靜態文件查找器嗎?

PROJECT_ROOT = path.dirname(path.abspath(__file__)) #gets directory settings is in 

STATIC_ROOT = path.join(PROJECT_ROOT,'static-root') 
# this folder is used to collect static files in production. not used in development 

STATIC_URL = "/static/" 

STATICFILES_DIRS = (
    ('', path.join(PROJECT_ROOT,'static')), #store site-specific media here. 
) 

# List of finder classes that know how to find static files in 
# various locations. 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

TEMPLATE_CONTEXT_PROCESSORS = (
    # other processors... 
    "django.core.context_processors.static", 
) 
+0

謝謝你的回答!第一個問題 - 是你公佈的url.py位是否用於替換我已有的urlpatterns的定義(現在已在上面發佈)?另外我得到的錯誤「名稱'設置'沒有爲您發佈的代碼位定義..我不認爲我有我的設置中的文件搜索器,你可以在這裏看到完整的settings.py文件:http:// pastebin .com/R8bKXkGB。我認爲測試的目的可能更容易硬編碼的位置,然後改變一次我知道我有文件夾結構的權利,但我會嘗試通過您現在發佈的設置.. – Holly

+0

哦,其實我有兩個 – Holly

+0

沒有這些urlpatterns可以追加到你的urls文件的底部。在urls文件的頂部,從django.conf導入設置中添加** ** –

0

你應該寫你的settings.py這樣的:

import os 
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 

STATIC_URL = '/static/' # Should be root relative or absolute 

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'), 
) 

# Where your static files will be collected with colletstatic command 
# I use it only in deployed configuration with DEBUG=False 
# Need to be outside STATICFILES_DIR 
STATIC_ROOT = '/var/www/your.site' 

只是可以肯定,與CSS加載螢火蟲或WebKit的調試檢查。

請記住,如果settings.DEBUG == False Django不會爲您的靜態文件提供服務。

+0

*不要*將'STATIC_ROOT'添加到'STATICFILES_DIRS'。這是不正確的,你不應該推薦它。 'STATIC_ROOT'僅用於生產中'collectstatic'的輸出。它甚至不應該存在於開發中。 –

+0

您誤讀了,我的例子中沒有STATIC_ROOT。 – noirbizarre

+0

我正在使用'STATIC_ROOT'作爲「STATIC_ROOT'設置的目錄的通用名稱」,它幾乎總是「靜態的」。不要將相同的目錄添加到'STATICFILES_DIRS'。這是我的觀點。 –

相關問題