<!DOCTYPE html>
<html lang="es">
<head>
<title>{% block title %}Titulo del proyecto web{% endblock %}</title>
</head>
<body>
<div id="header">
<h1>Título del proyecto web</h1>
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
所以在index.html中,目标是显示for循环以及base的'header'div。 Index.html是这样的:
{% extends "base.html" %}
{% block title %}Questions{% endblock %}
{% block content %}
{% for pregunta in preguntas %}
<h3>{{ pregunta }} ?</h3><br/>
{% endfor %}
{% endblock %}
我已经多次检查了代码。如果我退出继承,循环工作正常,但我不知道为什么它在扩展到base.html时不起作用。
当我运行服务器页面时,它只显示一个空白页面。帮助将非常感激。非常感谢你。
编辑:这是我的模板目录结构:
主项目/模板/和里面的模板文件夹中有base.html和'preguntasyrespuestas'文件夹,它是应用程序名称。
在'preguntasyrespuestas'文件夹中有index.html模板。但它会自动在这个文件夹中创建一个'base.html'(?)我只是删除它。
views.py代码如下所示:
from django.http import HttpResponse,Http404
from preguntasyrespuestas.models import Pregunta
from django.shortcuts import get_object_or_404, render_to_response
def index(request):
preguntas = Pregunta.objects.all()
return render_to_response('preguntasyrespuestas/index.html',
{'preguntas': preguntas})
def pregunta_detalle(request, pregunta_id):
pregunta = get_object_or_404(Pregunta, pk=pregunta_id)
return render_to_response('preguntasyrespuestas/pregunta_detalle.html',
{'pregunta': pregunta})
这是settings.py模板var:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ["C:/Projects/primerproyecto/Templates"],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
那么,两个文件(base.html和index.html)必须位于Templates目录中(不在模板内的app目录内)吗?我尝试了它并且仍然发生相同(输出空白页),如果在尝试组合文件位置时没有错误(在这两个文件夹之间)。
答案 0 :(得分:-1)
在您的应用中,模板文件夹结构必须类似于:
|- preguntasyrespuestas # your app folder
|- templates
-base.html
|- preguntasyrespuestas
-index.html
-pregunta_detalle.html
....
模板目录必须位于您的app文件夹中,并且里面必须是另一个带有应用程序名称的文件夹,其中必须是模板文件。
修改强>
如果您的模板位于应用模板文件夹中,则应将DIRS
更改为空列表:DIRS:[]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [], # change here: put an empty list
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]