我运行python manage.py runserver
,它仅显示父级- base.html 。根据{{3}},它应使用子模板覆盖父模板:
模板继承允许您构建一个基本的“骨架”模板,该模板包含站点的所有常见元素,并定义子模板可以覆盖的块。
base.html 和 base_child.html 在同一文件夹中:MyProject / MyApp / Templates /
views.py
def baseview(request):
return render(request,'base.html')
这是我的模板:
base.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>
{% block titleblock %}
Hello World Title
{% endblock %}
</title>
</head>
<body>
<p>
{% block bodyblock %}
Hello World!
{% endblock %}
</p>
</body>
</html>
base_child.html
{% extends "base.html" %}
{% block titleblock %}
Hello Grass title
{% endblock %}
{% block bodyblock %}
Hello Grass!
{% endblock %}
我相信documentation的答案和评论在描述中不清楚,这就是我提出这一问题的原因。
答案 0 :(得分:1)
因为您正在将基本模板渲染到视图函数中。
def baseview(request):
return render(request,'base.html')
渲染base_child模板时,它将覆盖父模板。
def baseview(request):
return render(request,'child_base.html')
答案 1 :(得分:0)
这两个模板都应使用不同的视图和URL呈现,如下所示:
urls.py为基础:
url(r'base/$', views.baseview),
views.py为基础:
def baseview(request):
return render(request,'base.html')
孩子的urls.py:
url(r'child/$', views.childview),
views.py for child:
def childview(request):
return render(request,'base_child.html')
现在键入
localhost:8000/base/
在您的浏览器网址中,它将显示基本title
,如果您输入
localhost:8000/child/
在您的浏览器网址中,它将用子title
覆盖基本title