python测试开发django-7.模板继承

前言

打开一个网站时候,点导航栏切换到不同的页面,发现导航部分是不变的,只是页面的主体内容变了,于是就可以写个母模板,其它的子页面继承母模板就可以了。

《玩转Django2.0》是最近出版的,基础部分详细,初学者值得入手!

母模板

可以在母模板中添加多个块标签,每个块标签取不同的名称,如下格式,context是块标签名称

{% block content %} {% endblock content %}

<!DOCTYPE html> <html lang="en"> <head>    <meta charset="UTF-8">    <title>母模板</title> </head> <body> <section>    <h1>顶部导航</h1>    <p>python自动化-上海-悠悠</p>    <hr> </section> <!--这是一段注释。block是一个块标签, content是标签名称--> {% block content %} {% endblock content %} <p>---------自动化教程---------</p> <!--这是一段注释。block是一个块标签, ad是标签名称--> {% block ad %} {% endblock ad %} <section>    <br><br><br><br><hr>    <h1>底部导航</h1>    <p>底部一些友情链接啊,网站导航,版权啊</p> </section> </body> </html>

也可以给块标签添加默认值,如:

<!--这是一段注释。block是一个块标签, 可以给默认值--> {% block defaut %} <p>如果子页面中,没填充此block内容,这里的就是默认内容</p> {% endblock defaut %}

子页面

extends继承母模板的页面内容,填充 block块标签内容,指定对应的名称就可以了。不是所有的block都需要填充,如果母模板中blcok有默认内容,子模板不填充的话,就显示默认的内容。

<!DOCTYPE html> <html lang="en"> <head>    <meta charset="UTF-8">    <title>子页面</title> </head> <body> <!--这是一段注释。extends继承basepage.html页面--> {% extends "basepage.html" %} {% block content %}    <p>这里是content块的填充内容</p> {% endblock content %} {% block ad %} <ul>自动化内容</ul>    {% for i in ads %}    <li>{{i}}</li>     {% endfor %} {% endblock ad %} </body> </html>

views与urls

上面子模板里面有给for循环,参数是ads,在views视图函数里面添加context 参数
hello/views.py视图函数

from django.shortcuts import render from django.http import HttpResponse, Http404 # Create your views here. def sonpage(request):    context = {"ads": ["selenium", "appium", "requests"]               }    return render(request, 'sonpage.html', context)

urls.py添加访问路径

from django.conf.urls import url from django.urls import re_path, path from hello import views urlpatterns = [    path("sonpage/", views.sonpage), ]

打开浏览器输入地址:http://127.0.0.1:8000/sonpage/ 就能访问到页面了

备注:子模板也可以结合使用上一篇提到的include语法:

{% include 'end.html’ %}

(0)

相关推荐

  • python测试开发django-2.templates模板与html页

    前言 Django 中的视图的概念是一类具有相同功能和模板的网页的集合.通俗一点来说,就是你平常打开浏览器,看到浏览器窗口展示出来的页面内容,那就是视图. 前面一章通过浏览器访问http://127. ...

  • python测试开发django-67.templates模板变量取值

    前言 django 的模板里面变量取值是通过句点语法来取值,就是一个点(.)符号.取值的对象也可以是字符串,int类型,list列表,字典键值对,也可以是一个类的实例对象. views视图 比如我在 ...

  • python测试开发django-69.templates模板过滤器filter

    前言 templates 模板里面过滤器 filter 的作用是对变量的出来,比如小写转大写,替换一些特殊字符,对列表取值,排序等操作. 内置的过滤器有很多,本篇拿几个常用的过滤器做案例讲解下相关的功 ...

  • python测试开发django -140.Bootstrap 缩略图

    前言 网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 class .thumbnail 的& ...

  • python测试开发django -143.Bootstrap 表单控件校验状态

    前言 Bootstrap 对表单控件的校验状态,如 error.warning 和 success 状态,都定义了样式.使用时,添加 .has-warning..has-error 或 .has-su ...

  • python测试开发django -142.Bootstrap 表单(form)

    前言 HTML 表单用于收集不同类型的用户输入.boostrap中表单有几种样式 基本垂直表单 内联表单 form-inline 水平排列表单 form-horizontal 基本表单实例 单独的表单 ...

  • python测试开发django -141.Bootstrap 面板(Panels)

    # 前言 面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 元素添加 class .panel 和 class .panel-default 即可 基础面板 不带标题的基本面 ...

  • python测试开发django -144.Ace Editor 在线编辑python代码

    前言 网页上想在线编辑代码,可以使用Ace Editor 在线编辑实现.比如我们想实现一个功能,在网页版上写python代码,能有python的语法自动补齐功能. Ace Editor 在线编辑 AC ...

  • python测试开发django-5.模板templates

    前言 html是一个静态的语言,里面没法传一些动态参数,也就是一个写死的html页面.如果想实现在一个固定的html样式,传入不同的参数,这就可以用django的模板传参来解决. <玩转Djan ...