2014-10-30 69 views
2

我是新的django框架。我創建了簡單的歡迎頁面,現在我想包括css文件在我的項目中。我不能在項目中應用css文件.i有錯誤,如「NetworkError:404 NOT FOUND -/static/css/hai.css」如何在django中爲css和javascript使用靜態文件夾?

my project structure 這是我的項目結構

setting.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
STATIC_URL = '/static/' 
TEMPLATE_DIRS=(
os.path.join(os.path.dirname(BASE_DIR),"static","templates"), 
) 
if DEBUG: 
    MEDIA_URL='/media/' 
    STATIC_ROOT=os.path.join(os.path.dirname(BASE_DIR),"static","static-only") 
    MEDIA_ROOT=os.path.join(os.path.dirname(BASE_DIR),"static","media") 
    STATICFILE_DIRS=(
    os.path.join(os.path.dirname(BASE_DIR),"static","static"), 
) 

url.py

if settings.DEBUG: 
urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT) 
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) 

base.html文件

<link href="/static/css/bootstrap.min.css" rel="stylesheet"> 

,我試圖以下鏈接,但我不能應用CSS https://www.youtube.com/watch?v=8t80DMAAps8

+1

您最好使用隨文檔提供的教程來學習,而不是使用隨機的YouTube視頻。 – Ngenator 2014-10-30 14:58:38

回答

2

我覺得這只是一個拼寫錯誤。你需要把一個SSTATICFILE後,因此它應該看起來像:

STATICFILES_DIRS=(
    os.path.join(os.path.dirname(BASE_DIR),"static","static"), 
) 

希望這會做。

0

試着做一個簡單的文件中像這樣

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
OUTER_DIR = os.path.dirname(BASE_DIR) 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

STATIC_URL = '/static/' 

TEMPLATE_DIRS=(
    os.path.join(OUTER_DIR, "static", "templates"), 
) 

MEDIA_URL='/media/' 
STATIC_ROOT = os.path.join(OUTER_DIR, "static", "static-only") 
MEDIA_ROOT = os.path.join(OUTER_DIR, "static", "media") 

STATICFILE_DIRS=(
    os.path.join(OUTER_DIR, "static"), 
) 

然後,在你的代碼中使用{% static %}模板標籤。

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

測試這一點與

DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

如果關閉DEBUG,那麼你需要添加

if not settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT) 
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) 

不是當它在你現在擁有它。

雖然templates目錄不應該在static文件夾中。一般來說,templatesstatic所需的特定文件應該在你的Django項目中不分開。

+0

我按照這些步驟仍然我得到了同樣的錯誤 – karnaf 2014-10-31 05:31:21

2

Django自動收集靜態STATIC_ROOT訪問STATIC_URL。把你的「基礎」靜態像引導到您的項目包(項目包是一個與init .py)simpleform > static > bootstrap > copy here all tree dirs from bootstrap package: css, fonts, js dir。並將您的應用程序靜態存儲在signup > static > also create css, js dirs中。

因此,如果hai.css是你將在你的base.html中使用的基本css之一,把它放到simpleform > static > css > hai.css

settings.py

這是你應該怎麼做可用的項目靜:

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

而對於應用靜:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

而且你已經設置的目錄中的Django應該存儲收集的靜態信息和上傳的媒體(以及訪問它們的網址)。例如,這是將其設置爲src > staticsrc > media

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

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
MEDIA_URL = '/media/' 

simpleform.urls

if settings.DEBUG: 
    # static files (images, css, javascript, etc.) 
    urlpatterns += patterns(
     '', 
     url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.MEDIA_ROOT}), 

     url(r'^static/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.STATIC_ROOT}), 
) 

模板

{% load staticfiles %} 

<link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet" media="screen"> 
<link href="{% static 'css/hai.css' %}" rel="stylesheet" media="screen"> 
+0

感謝q。現在我可以申請CSS可能項目 – karnaf 2014-10-31 05:41:34

相關問題