• 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' %}

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    web前端开发面试被虐篇(一)
    JSON字符串 拼接与解析
    IntelliJ IDEA 2017 Dubbo Elastic-job Redis Zookeeper RabbitMQ FastDFS MyCat 简介以及部分实现(三)
    IntelliJ IDEA 2017 MySQL5 绿色版 Spring 4 Mybatis 3 配置步骤详解(二)
    IntelliJ IDEA 2017 JDK Tomcat Maven 配置步骤详解(一)
    简单练习
    C#实现上传/下载Excel文档
    javascript练习题
    转 浏览器滚动条以及常用样式汇总
    深入基础(五)工具模块,常用模块(2)
  • 原文地址:https://www.cnblogs.com/canglongdao/p/14094684.html
Copyright © 2020-2023  润新知