python测试开发django(7)--django模板继承(block和extends)

前言

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

母模板

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

{% 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是一个块标签,tagg/abc/hi是标签名称--->
{% block tagg %}
<p>如果子页面中,没有填充此block内容,我就是默认内容</p>
{% endblock tagg %}
<p>----------自动化教程----------</p>
{% block abc %} {% endblock abc %}

{% block hi %}
<p>如果子页面中,没有填充此hi内容,我就是默认内容</p>
{% endblock hi %}
<section>
    <br><br><br><br><hr>
    <h1>底部导航</h1>
    <p>底部一些友情链接啊,网站导航,版权啊</p>
</section>
</body>
</html>

xjyn/templates/mother.html(文件名可以随意命名)文件内容如上;

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

{% block tagg %}
<p>如果子页面中,没有填充此block内容,我就是默认内容</p>
{% endblock tagg %}

  子页面

extends继承母模板的页面内容,填充block块标签内容,指定对应的名称就可以了。不是所有的block都需要填充,如果母模板中block有默认内容,子模板不填充的话,就显示默认的内容。如果母模板中block没有默认内容(abc),且字模板未使用该block(abc),则不显示也不报错;xjyn/templates/son.html内容如下:  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>子页面</title>
</head>
<body>
{% extends "mother.html" %}

{% block tagg %}
    <p>哈喽,everybody,欢迎你观看我的博客园</p>
{% endblock tagg %}

{% block abc %}
<ul>自动化内容</ul>
    {% for i in c %}
    <li>{{i}}</li>
    {% endfor %}
{% endblock abc %}
</body>
</html>

views与urls

上面子模板里面有给for循环,参数是c(此参数必须与html中的保持一致,不然(自动化内容)结果为空),在views视图函数里面添加cont参数(参数名可随意定义)

xjyn/views.py视图函数

from django.shortcuts import render
from django.http import HttpResponse,Http404
# Create your views here.

def he(request):
    cont={"c":["selenium","requests","jmeter"]}
    return render(request,"son.html",cont)

 urls.py添加访问路径

#helloworld/helloworld/urls.py
from django.conf.urls import url
from django.urls import re_path,path
from xjyn import views

urlpatterns=[
    url("^s/$",views.he),
]

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

 

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

{% include 'end1.html' %}

 

posted on 2020-12-06 22:12  星空6  阅读(155)  评论(0编辑  收藏  举报

导航