广告
返回顶部
首页 > 资讯 > 后端开发 > Python >pythonflask之模板继承方式
  • 828
分享到

pythonflask之模板继承方式

pythonflaskflask模板继承pythonflask模板继承 2023-03-02 20:03:50 828人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录总结 为什么要用模板继承?原因很简单,因为模板继承能让我们在实现效果的前提下少些很多代码! 咱废话不多说,先来看个小例子,看完我讲的这个例子,相信你能更加明白模板继承的好处、优点

为什么要用模板继承?原因很简单,因为模板继承能让我们在实现效果的前提下少些很多代码!

咱废话不多说,先来看个小例子,看完我讲的这个例子,相信你能更加明白模板继承的好处、优点!(为了让大家能够更加明白模板继承的优点,在这里我先以传统方式来做)

首先、在static目录下新建一个style目录(用于存放所有的CSS文件),然后新建一个style文件(style.css),其代码如下:

*{margin: 0; padding: 0;}ul{list-style: none;}li{width:100px; float: left;}.cl_btoh{clear: both;}#head{width:800px; height:50px; line-height: 50px; margin:0 auto; background-color: #303641;}#head a{color:#ECEFF1;}#head ul{line-height: 50px;}#head li{text-align: center;}#main{height:400px; width:800px; background-color: yellowgreen; margin: 0 auto; color:#FFFFFF;text-align: center; line-height: 400px;}#footer{height:40px; width:800px; margin: 0 auto; background-color: #3B666B; color:#FFFFFF;text-align: center; line-height: 40px;}

在templates模板目录下新建一个index.html文件(首页)和一个list.html(列表页)

index.html文件代码如下:

<!DOCTYPE html><html><head><meta charset="utf-8"><title></title>        <link rel="stylesheet" href="{{ url_for('static',filename='style/css.css') }}"></head><body>        {# head start#}        <div id="head">            <ul>                <li><a href="#">首页</a></li>                <li><a href="#">养生新闻</a></li>                <li><a href="#">人群养生</a></li>                <li><a href="#">两性养生</a></li>                <li><a href="#">生活养生</a></li>                <li><a href="#">饮食养生</a></li>                <li><a href="#">中医养生</a></li>            </ul>        </div>        <div class="cl_btoh"></div>        {#  main start  #}        <div id="main">            <h4>这是index页面主体部分</h4>        </div>        {#  footer start  #}        <div id="footer">            <h4>网站底部内容</h4>        </div></body></html>

list.html文件代码如下:

<!DOCTYPE html><html><head><meta charset="utf-8"><title></title>        <link rel="stylesheet" href="{{ url_for('static',filename='style/css.css') }}"></head><body>        {# head start#}        <div id="head">            <ul>                <li><a href="#">首页</a></li>                <li><a href="#">养生新闻</a></li>                <li><a href="#">人群养生</a></li>                <li><a href="#">两性养生</a></li>                <li><a href="#">生活养生</a></li>                <li><a href="#">饮食养生</a></li>                <li><a href="#">中医养生</a></li>            </ul>        </div>        <div class="cl_btoh"></div>        {#  main start  #}        <div id="main">            <h4>这是list页面主体部分</h4>        </div>        {#  footer start  #}        <div id="footer">            <h4>网站底部内容</h4>        </div></body></html>

然后我们再创建一个test.py文件,其代码如下:

from flask import Flask,render_templateapp = Flask(__name__)@app.route("/")def index():    return render_template("index.html")@app.route("/list/")def my_list():    return render_template("list.html")if __name__ == "__main__":    app.run(debug=True)

运行test.py文件,打开浏览器,看看运行效果,结果如下。

这两个运行结果,除了中间部分不一样,头部、底部都一样,是吧??我可以坦白告诉大家,基本上每个网站头部、尾部都一样,不信你可以打开新浪,网易、豆瓣网站瞅瞅.....有点跑题了哈!!咱言归正传。

既然我们知道网站头部、底部都一样,哪我们是不是可以把网站头部、底部代码抽取出来,放到公共页面中,下次需要我们在继承或者调用就OK了,是吧?说干就干!!

我们在templates目录下新建一个base.html文件,这个文件(base.html)可以称为父模板或基模板,其代码如下:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <link rel="stylesheet" href="{{ url_for('static',filename='style/css.css') }}"></head><body>    {% block head %}         <div id="head">            <ul>                <li><a href="#">首页</a></li>                <li><a href="#">养生新闻</a></li>                <li><a href="#">人群养生</a></li>                <li><a href="#">两性养生</a></li>                <li><a href="#">生活养生</a></li>                <li><a href="#">饮食养生</a></li>                <li><a href="#">中医养生</a></li>            </ul>        </div>        <div class="cl_btoh"></div>    {% endblock %}    {% block main %}         <div id="main">            <h4>这是index页面主体部分</h4>        </div>    {% endblock %}    {% block footer %}         <div id="footer">            <h4>网站底部内容</h4>        </div>    {% endblock %}</body></html>

我们在父模板中定义好了接口后,子模板(index.html 跟 list.html)的代码可以删除了。删除了不能就这样走人完事了,我们还得实现我们之前的效果对吧!

在index.html文件中,我们通过extends语句来导入父模板,然后就能在子模板中衍生父模板定义的接口。index.html代码如下:

{% extends "base.html" %}

咦,咋就一行代码嘞,阿汤锅,你在逗我呢?嗯,没错,就一行代码!够精简吧!!丫的,不信是吧?不信我们运行看看效果,结果如下:

结果是不是和之前一模一样,是吧?现在有个需求,啥需求呢?比如我想将index.html页面“网站底部内容“这几个字改成footer,哪怎么做呢?

做法:

在index.html页面中,重写父模板定义的footer接口,如果没有定义,就得在父模板先定义再重写。(由于我们在父模板中定义了,哪我们就无需定义),index.html其代码如下:

{% extends "base.html" %}{% block footer %}     <div id="footer">            <h4>footer</h4>     </div>{% endblock %}

运行,试试,看是不是实现了我们得需求!

嗯,底部文字确实变成了footer,不过呢,现在又有一个新需求。我想要在这是index页面主体部分加一行内容,咋办呢?有朋友可能会说:哪还不简单,直接在index.html block main中定义就ok了呗。嗯,我们来试试这法子,在index.html增加如下代码:

{% block main %}    <div id="main">        <p>test</p>    </div>{% endblock %}

运行结果如下:

阿汤哥、咋回事?不是说好的在这是index页面主体部分下面加一行内容??之前的内容跑哪去了?为什么会出现这样的情况呢??原因很简单,因为我们在子模板定义的内容将父模板接口定义的内容覆盖了,哪有啥解决办法呢?要想实现功能,只需增加一个super变量即可,代码如下:

{% block main %}    {{ super() }}    <div style="height:auto;width: 800px;background-color:yellowgreen;margin:0 auto;"><b>ee</b></div>{% endblock %}

再运行试试,结果实现了我们想要的结果。

在模板继承中,我们需要注意以下几点:

1、子模板第一段必须是{% extends "父模板文件路径" %}

2、子模板内容必须写在父模板定义的接口中,写在接口外面的内容不会被渲染。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: pythonflask之模板继承方式

本文链接: https://www.lsjlt.com/news/198254.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pythonflask之模板继承方式
    目录总结 为什么要用模板继承?原因很简单,因为模板继承能让我们在实现效果的前提下少些很多代码! 咱废话不多说,先来看个小例子,看完我讲的这个例子,相信你能更加明白模板继承的好处、优点...
    99+
    2023-03-02
    python flask flask模板继承 python flask模板继承
  • python flask模板继承方式是什么
    今天小编给大家分享一下python flask模板继承方式是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先...
    99+
    2023-07-05
  • django-4-模板标签,模板继承
    <<<模板标签>>> {% for %}{% endfor %} 循环 {% if %}{% elif %}{% else %}{% endif %} 判断 {% url 'app:name' 参数 ...
    99+
    2023-01-30
    模板 标签 django
  • Python Django框架介绍之模板标签及模板的继承
    目录一、标签语法二、常见标签三、标签例子四、模板的继承一、标签语法 由%}和 {% 来定义的,例如:{%tag%} {%endtag%},完整的标签有开始就有结束,如条件语句,有条件...
    99+
    2022-11-12
  • PHP中Smarty模板如何实现模板继承
    这篇文章主要介绍PHP中Smarty模板如何实现模板继承,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!{extends}模板继承中,你可以在子模板内使用{extends}标签来扩展父...
    99+
    2022-10-19
  • Django模板继承与模板的导入实例详解
    目录一:模版的继承1.什么是模板继承2.使用继承流程原理3.模板继承语法二:模板的继承使用1.案例需求2.总结模板继承三:模版的导入1.模板导入2.模板导入格式3.模板导入使用4.使...
    99+
    2022-11-13
  • C++继承模式详解
    目录继承继承的概念继承的定义继承关系和访限定符继承方式父类和子类对象赋值转化继承中的作用域子类的默认成员函数继承与友元继承与静态成员复杂的菱形继承虚继承继承的总结继承 继承的概念 ...
    99+
    2022-11-12
  • django中模板继承与ModelForm怎么用
    这篇文章主要讲解了“django中模板继承与ModelForm怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“django中模板继承与ModelForm怎么用”吧!模板的继承完美在写ht...
    99+
    2023-06-30
  • Java设计模式之模板方法模式
    在我们实际开发中,如果一个方法极其复杂时,如果我们将所有的逻辑写在一个方法中,那维护起来就很困难,要替换某些步骤时都要重新写,这样代码的扩展性就很差,当遇到这种情况就要考虑今天的主角...
    99+
    2022-11-13
    Java 设计模式 模板方法模式
  • django中模板继承与ModelForm实例详解
    目录模板的继承form和ModelForm使用方法总结模板的继承 完美在写html的时候会发现,自己多个html文件中又好多东西是一样的,包括静插件的引入 还有有些简单的css样式都...
    99+
    2022-11-10
  • Flask模板继承深入理解与应用
    目录什么叫模板继承呢模板页完整代码什么叫模板继承呢 在我的理解就是:在前端页面中肯定有很多页面中有很多相同的地方,比如页面顶部的导航栏,底部的页脚等部分,这时候如果每一个页面都重写一...
    99+
    2022-11-11
  • Django中模板的继承及引用实现
    引言 大家啊可以随便取找个网站,比如:淘宝。多去看看它不同的页面,用你闪亮的大眼睛去找不同点和相同点。 到一定时候,你会发现,网站中有些不同的页面,它们中的部分数据是完全一模一样的...
    99+
    2022-11-12
  • JavaScript继承方式介绍
    本篇内容介绍了“JavaScript继承方式介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、构造函数...
    99+
    2022-10-19
  • Typescript模块的导入导出与继承方式
    目录Typescript模块的导入导出与继承导入测试导出测试TypeScript知识点整理TS 和 JS 有什么差异TS 数据类型TS 中的类TS 的访问修饰符TS 中的接口 - i...
    99+
    2022-11-13
  • Django模板过滤器和继承示例详解
    目录模板过滤器模板的继承模板继承样例总结模板过滤器 定义:在变量输出时对变量的值进行处理 作用:可以通过使用过滤器来改变变量的输出显示 语法:{{变量 | 过滤器:'参数值1' | ...
    99+
    2022-11-12
  • Laravel框架模板继承操作如何实现
    本文小编为大家详细介绍“Laravel框架模板继承操作如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel框架模板继承操作如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。laravel和T...
    99+
    2023-07-04
  • Django模板过滤器和继承示例分析
    本篇内容主要讲解“Django模板过滤器和继承示例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Django模板过滤器和继承示例分析”吧!模板过滤器定义:在变量输出时对变量的值进行处理作用:...
    99+
    2023-06-25
  • Java设计模式之浅谈模板方法模式
    一. 什么是模板方法设计模式 从字面意义上理解, 模板方法就是定义出来一套方法, 作为模板, 也就是基础。 在这个基础上, 我们可以进行加工,实现个性化的实现。比如:一日餐三. 早餐...
    99+
    2022-11-12
  • Java设计模式之模板方法模式详解
    目录模板方法模式模板方法模式的优缺点使用场景总结模板方法模式 模板方法模式法(Template Method)定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不...
    99+
    2022-11-13
  • java设计模式—静态代理模式(聚合与继承方式对比)
    一、概述目标:要在Tank的move()方法做时间代理及日志代理(可以设想以后还要增加很多代理处理),且代理间的顺序可活更换思路:(1)聚合:代理类聚合了被代理类,且代理类及被代理类都实现了movable接口,则可实现灵活多变,具体看代码(...
    99+
    2023-05-31
    java 静态代理模式 设计模式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作