2016-09-25 86 views
0

請幫助理解我做錯了什麼。收到404錯誤獲取靜態Django文件

我在settings.py:

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 
STATIC_URL = os.path.join(PROJECT_ROOT, 'static').replace('\\','')+'/' 

而且index.html中:

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

但我仍然有錯誤404:

"GET /var/cardsite/cardsite/static/css/table.css HTTP/1.1" 404 1696 

我有這個文件:

ls -la /var/cardsite/cardsite/static/css/table.css 
-rw-r--r-- 1 root root 77 Sep 25 16:15 /var/cardsite/cardsite/static/css/table.css 

那麼是怎麼回事?

P.S.存儲在「的/ var/cardsite」我的項目,我想使每個應用程序的靜態文件夾一樣,例如是默認的應用程序「cardsite」

感謝

+0

在使用靜態文件之前,您是否運行過「collectstatic」命令? –

+0

是的,但它沒有幫助 – azazasovich

+0

我已經添加了一個答案,檢查它是否有幫助。 –

回答

1

閱讀本Django_Docs
還必須有一個STATIC_ROOT選項設置之前,您可以使用靜態文件,繼承人一些幫助 添加到您的代碼:

STATIC_URL = os.path.join(PROJECT_ROOT, 'static').replace('\\','')+'/' 

# Here you can add all the directories from where you want to use your js, css etc 
STATICFILES_DIRS = [ 
    # This can be same as the static url 
    os.path.join(PROJECT_ROOT, "static"), 

    # also any other dir you wanna use 
    "/any/other/static/path/you/wanna/use", 
] 

# This is the static root dir from where django uses the files from. 
STATIC_ROOT = os.path.join(PROJECT_ROOT, "static_root") 

,你還需要在urls.py文件中指定它,只是將下面的代碼添加到urls.py文件:

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

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

添加此之後,運行以下命令:

python manage.py collectstatic 

這將複製您需要在靜態根目錄中的所有靜態。

+0

它的工作。感謝您的幫助 – azazasovich