我正在开发一个有几个静态页面的网站。除模板外,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 %}
感谢任何帮助,谢谢。
答案 0 :(得分:0)
index.html
,contact.html
以及与您的应用名称相关的类似文件&#39; blog
&#39;应该进入<workdir>templates/blog/
答案 1 :(得分:0)
我从urlpatterns中删除了斜杠,模板按预期使用。可能不是最好的解决办法,但我们会看到。