2016-12-02 75 views
0

在Windows主機中的虛擬機guest虛擬機上運行Debian。設置適配器類型的橋接。在客人身上安裝了Django,並使用內置的runserver和內置數據庫進行測試。Django:未找到靜態文件

有簡單的文件結構:

> .. 
> templates 
> base.html 
> static 
> css 
>  base.css 
> manage.py 
> setting.py 
> .. 

文件settings.py

STATIC_URL = '/static/' 

文件base.html

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

獲得錯誤,未發現:

GET http://192.168.XX.XX:8000/static/css/base.css 

Debug in settings.py設置爲true(表示應該存儲靜態文件)。該鏈接看起來正確。現在爲什麼不工作?

編輯:看起來我忘了跑'collectstatic'。下面是它運行後輸出:

enter image description here

EDIT2:

EXTERNAL_APPS = [ 
    .. 
    'django.contrib.staticfiles', 
] 
PROJECT_NAME = 'fooproject' 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
STATIC_ROOT = os.path.join(BASE_DIR, PROJECT_NAME, 'staticfiles') 
STATIC_URL = '/static/' 
+0

你有沒有閱讀權限? – Sayse

+0

@Sayse剛剛添加664'靜態/'。不用找了。獲得404(這可能與讀訪問有關)? – Oleg

+1

你的靜態設置是什麼樣的? –

回答

2

我已成功地解決我的問題與ChristophBluoss和DanielRoseman幫助。有2個問題:

  1. 我還沒跑python manage.py collectstatic
  2. 配置錯過了關鍵設置 - STATIC_ROOTSTATICFILES_DIRS

將這些變量添加到settings.py文件併成功運行collectstatic後 - 一切正常。

P.S.應該更仔細地閱讀Django文檔。對於我來說這並不是很清楚,collectstatic是強制性的。

編輯:當DEBUG設爲True作爲DanielRoseman建議collectstaticSTATIC_ROOT沿是非強制性的。我試圖刪除staticfilesSTATIC_ROOT - 它仍然適用於我的開發環境。所以STATICFILES_DIRS是失蹤的設置。

+2

嗯,當您在DEBUG中提供靜態文件時,collectstatic *不是*必需的。毫無疑問,問題在於缺少STATICFILES_DIRS設置。 –

+0

你說得對,要修改我的答案。 – Oleg

+0

用'STATICFILES_DIRS'代替'STATIC_ROOT'。 –