模板继承


18.4.1 模板继承


1. 父模板:

我们首先创建一个名为base.html的模板,并将其存储在index.html所在的目录中。

这个文件包含所有页面都有的元素,其他模板都继承base.html
node2:/django/mysite/learning_log/learning_logs/templates/learning_logs#cat base.html
<p> <a href="{% url 'learning_logs:index' %}">Learning Log</a>
</p>
{% block content %}{% endblock content %}


在这个文件的第一部分创建一个包含项目名的段落,该段落也是一个到主页的连接。

为创建链接,我们使用了一个模板标签,它是用大括号和百分号({% %})表示的


模板标签是一小段代码,生产要在网页中显示的信息。

在这个实例中,模板标签{% url 'learning_logs:index' %}生成一个URL,

该URL与learning_logs/urls.py 中定义的名为index的URL模式匹配

在这个示例中,learning_logs是一个命名空间,而index是该命名空间中一个名称独特的URL模式


node2:/django/mysite/learning_log/learning_log#cat urls.py
"""learning_log URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import include,url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^log/',include('learning_logs.urls',namespace='learning_logs')),
]


node2:/django/mysite/learning_log/learning_logs#cat urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
   
   url(r'^$',views.index,name='index'),
]


2.子模板

现在需要重新编写index.html,使其继承base.html,如下所示:



node2:/django/mysite/learning_log/learning_logs/templates/learning_logs#cat index.html 
{% extends "learning_logs/base.html" %}
{% block content %}
<p>LEARNING Log helps you keep track of your learning,for any topic you're learning about.</p>
{% endblock content %}


如果将这些代码与原来的index.html进行比较,

子模板的第一行必须包含标签{% extends  %},让Django知道它继承了哪个父模板。

文件base.html位于文件夹learning_logs中,因此父模板路径中包含learning_logs  


这行代码导入模板base.html的所有内容,让index.html 能够指定要在content块预留的空间中添加的内容

原文地址:https://www.cnblogs.com/hzcya1995/p/13348714.html