Django静态/模板加载器

时间:2015-11-08 23:14:32

标签: django

我正在使用Django 1.8。根据文档,它说在给定开发环境中的默认设置的情况下,您应该能够将以下目录用于模板/静态文件:

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/'

1 个答案:

答案 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>