Django模板的简单继承问题
刚刚在Django开始,并且我有一些继承问题。 看起来循环for继承其他模板时不起作用。 这是我在base.html中的代码:
<!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)都必须位于模板目录中(不在模板内的应用程序目录中)? 我已经尝试过,并且仍然发生相同的情况(输出一个空白页面),如果尝试合并文件位置时(在这两个文件夹之间),如果不是错误的话。
在您的应用程序中,模板文件夹结构必须如下所示:
|- preguntasyrespuestas # your app folder
|- templates
-base.html
|- preguntasyrespuestas
-index.html
-pregunta_detalle.html
....
模板目录必须位于您的应用程序文件夹中,并且其内部必须是具有应用程序名称的另一个文件夹,并且其内部必须是模板文件。
编辑
如果您的模板位于应用程序模板文件夹中,则应将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',
],
},
},
]
链接地址: http://www.djcxy.com/p/90135.html
上一篇: Simple inheritance issue with Django templates
下一篇: django template inheritance: how to NOT display block from parent?