2016-10-12 94 views
-1

我是Django和Python中的新玩家。我想從項目級靜態文件夾加載靜態文件。問題是我不能,但我仍然可以加載應用程序的靜態。 這是我的項目的結構:無法在視圖中加載Django靜態文件

Yaas 
    __init__.py 
    settings.py 
    urls.py 
    wsgi.py 
    templates 
     base.html 
    static 
     style.css 
    auction 
     templates 
      auction 
       index.html 
     static 
      auction 
       style.css 
     __init__.py 
     apps.py 
     models.py 
     urls.py 
     views.py 

的事情是它的工作原理與拍賣的靜態文件,這樣在base.html文件:

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

但它與項目靜態文件返回404 :

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

settings.py

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

我在Django上嘗試了其他解決方案和文檔,但它仍然無法工作。我正在使用Django 1.10。

+1

那些不是由Django渲染的,所以標籤將不起作用 –

回答

0

我加入下面的步驟進行這項工作:

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

docs(後4點):

你的項目很可能也靜態資產不依賴於 一個特定的應用。除了在您的 應用程序中使用靜態/目錄外,您還可以在您的 設置文件中定義一個目錄列表(STATICFILES_DIRS),其中Django也將查找靜態文件。

請注意STATIC_ROOT目錄,其中Django會輸出所有收集到的每個<app>/staticSTATICFILES_DIRS目錄中找到靜態文件,必須是不同的。

希望有幫助!

+0

它的工作原理!謝謝。所以就像STATIC_ROOT沒有在新版本的Django中使用來包含項目靜態文件了? –

+0

看起來像STATIC_ROOT用於指示Django(使用collectstatic命令)收集(輸出)靜態文件的位置。檢查文檔,我認爲這不應該被刪除,但它應該與STATICFILES_DIRS目錄不同。如果它們都相同,則Django不能用所有收集的靜態文件替換輸出STATIC_ROOT目錄,因爲該目錄也具有輸入靜態文件。我會調整我的答案 – jga