我有一个视图,从我的模板目录返回一个页面,成功,没问题:
def home(request):
c = {}
return render_to_response('home.html', c, context_instance=RequestContext(request))
如果 home.html 是一个没有 extends 的简单网页,则返回正常。
但是,如果我使用include,比如{%extends“base.html”%},它只返回base.html而不添加来自子home.html的内容。可能导致这种情况的原因是什么?
home.html的
{% extends "base.html" %}
{% block title %}Home{% endblock %}
{% block content %}
This is the homepage.
{% endblock %}
base.html文件
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{% block content %}{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
目前,这将返回base.html的副本,如下所示:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>
</body>
</html>
为什么不包含内容或标题栏?
答案 0 :(得分:1)
在名为内容的 base.html 块中出现两次。您可能希望将第一个块命名为title
,例如{% block title %}{% endblock %}
Django建议您不要定义多个具有相同名称的模板块。
最后,请注意,您无法在同一模板中定义多个具有相同名称的块标记。存在这种限制是因为块标签在“两个”方向上工作。也就是说,块标记不仅提供填充孔 - 它还定义填充父级孔的内容。如果模板中有两个具有相似名称的块标记,则该模板的父级将不知道要使用哪个块的内容。