2015-11-08 98 views
0

我正在使用Django 1.8。每它說,鑑於在開發環境中的默認設置,你應該能夠使用以下目錄中的模板/靜態文件文檔:Django靜態/模板加載器

mysite/main/templates/main/template.html 

mysite/main/static/main/style.css 

隨着我需要添加os.path.join(BASE_DIR, 'main/templates')到我的模板顯示目錄的模板。有了靜態文件,我無法通過任何方式找到它們。

該文檔似乎表明,在開發過程中,模板/靜態加載器應自動查找這些目錄,然後找到靜態文件和模板文件,而不必在設置中定義目錄。由於某種原因,他們不是。我敢肯定,我錯過了一些小小的東西,但我完全沒有想到它。

感謝您的任何幫助。


編輯:

在我看來,我打電話與渲染快捷方式的模板:

from django.shortcuts import render 

def index(request): 
    data = {} 
    return render(request, 'main/index.html', data) 

在我的模板文件,我想打電話給我的靜態文件,像這樣:

{% load staticfiles %} 

<html> 
<head> 
     <title>Purple Cross</title> 
     <link rel="stylesheet" type="text/css" href="{% static main/css/style.css %}"> 
</head> 
<body> 
     {% block content %} 
     {% endblock %} 
</body> 
</html> 

編輯2:

main.urls.py:

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


urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

至於設置文件所說,這裏是相關的靜態文件的唯一的事情(+安裝的應用程序):

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'main', 
) 


STATIC_URL = '/static/' 
+0

對不起報價,我試圖用的mysite/MYAPP一概而論,但應用程序實際上是所謂的「主」 –

+1

請出示您的模板和靜態文件設置。從模板目錄中刪除'os.path.join(BASE_DIR,'main/templates')'時,調試頁面會說什麼目錄?你確定'main'在你的'INSTALLED_APPS'中嗎?您的項目「mysite」實際上是否稱爲「main」? – Alasdair

+0

嗯,我忘了添加'主'到我安裝的應用程序。這解決了模板問題,我不再需要將模板目錄添加到目錄。但是,靜態文件的問題仍然存在。我會爲我的編輯添加幾個可能性 –

回答

4

您的模板中有拼寫錯誤。您需要添加周圍的文件目錄href="{% static 'main/css/style.css' %}

{% load staticfiles %} 

<html> 
<head> 
     <title>Purple Cross</title> 
     <link rel="stylesheet" type="text/css" href="{% static 'main/css/style.css' %}"> 
</head> 
<body> 
     {% block content %} 
     {% endblock %} 
</body> 
</html>