Django找到index.html模板,但没有其他人

时间:2015-01-14 17:27:59

标签: python django templates static

我正在开发一个有几个静态页面的网站。除模板外,Django能够很好地找到静态文件。我正在使用每个模板扩展的基本html文件(basesite.html)。找到并正确显示index.html,但其余模板只显示basesite.html部分,而不显示每个页面的自定义块内容。这甚至发生在Django默认管理页面上。

basesite.html从Google字体加载静态文件,一些本地CSS和JavaScript,互联网上的字体,并准备网站的导航栏。

我在settings.py中尝试了一些静态和模板定义配置,我相信我已正确配置它们。我不明白Django是如何找到index.html的,但是没有其他模板都存储在同一目录中。

这是我的目录层次结构:

├── blog
├── db.sqlite3
├── mysite
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── manage.py
├── static
│   ├── bootstrap
│   ├── css
│   │   └── style.css
│   ├── files
│   ├── images
│   └── js
└── templates
    ├── admin
    │   └── base_site.html
    ├── basesite.html
    ├── blog
    │   └── blogpost_list.html
    ├── contact.html
    ├── index.html
    └── projects.html

以下是settings.py的一些相关内容:

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))   

DEBUG = True

TEMPLATE_DEBUG = True
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]

ALLOWED_HOSTS = []

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

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

我的urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.views.generic import TemplateView

urlpatterns = patterns('',

    url(r'^$', TemplateView.as_view(template_name="index.html")),
    url(r'^projects/', TemplateView.as_view(template_name="projects.html")),
    url(r'^contact/', TemplateView.as_view(template_name="contact.html")),
    url(r'^.*$', include('blog.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

每个模板都有以下内容:

{% extends "basesite.html" %}
{% load static %}

{% block content %}
    <p>Some HTML...</p>
{% endblock %}

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

index.htmlcontact.html以及与您的应用名称相关的类似文件&#39; blog&#39;应该进入<workdir>templates/blog/

答案 1 :(得分:0)

我从urlpatterns中删除了斜杠,模板按预期使用。可能不是最好的解决办法,但我们会看到。