Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Flask】Flask框架中的模板代码复用

【Flask】Flask框架中的模板代码复用

作者头像
天道Vax的时间宝藏
发布于 2021-08-11 08:17:26
发布于 2021-08-11 08:17:26
57900
代码可运行
举报
运行总次数:0
代码可运行

一. 继承

模板继承是为了重用模板中的公共内容。一般Web开发中,继承主要使用在网站的顶部菜单、底部。这些内容可以定义在父模板中,子模板直接继承,而不需要重复书写。

  • 标签定义的内容
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{% block top %} {% endblock %}
  • 相当于在父模板中挖个坑,当子模板继承父模板时,可以进行填充。
  • 子模板使用extends指令声明这个模板继承自哪个模板
  • 父模板中定义的块在子模板中被重新定义,在子模板中调用父模板的内容可以使用super()

父模板

  • base.html
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{% block top %}
    <h1>这是头部内容</h1>
{% endblock %}


{% block center %}
    这是父类的中间的内容
{% endblock %}


{% block bottom %}
    <h1>这是底部内容</h1>
{% endblock %}

子模板

  • extends指令声明这个模板继承自哪
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{% extends 'base.html' %}

{% block content %}
    {{ super() }} <br>
    需要填充的内容 <br>
{% endblock content %}

模板继承使用时注意点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- 不支持多继承
- 为了便于阅读,在子模板中使用extends时,尽量写在模板的第一行。
- 不能在一个模板文件中定义多个相同名字的block标签。
- 当在页面中使用多个block标签时,建议给结束标签起个名字,当多个block嵌套时,阅读性更好。

二. 包含

Jinja2模板中,包含(Include)的功能是将另一个模板整个加载到当前模板中,并直接渲染。

  • include的使用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{% include 'hello.html' %}

包含在使用时,如果包含的模板文件不存在时,程序会抛出TemplateNotFound异常,可以加上 ignore missing 关键字。如果包含的模板文件不存在,会忽略这条include语句。

  • include的使用加上关键字ignore missing
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{% include 'hello.html' ignore missing %}

模板代码复用方式小结

继承(Block)、包含(include)均能实现代码的复用。

  • 继承(Block)的本质是代码替换,一般用来实现多个页面中重复不变的区域。
  • 包含(include)是直接将目标模板文件整个渲染出来。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flask 模板 - 宏、继承、包含
Jinja2支持宏,还可以导入宏,需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有模板中,以避免重复。
Devops海洋的渔夫
2019/12/24
1.1K1
Flask 模板 - 宏、继承、包含
Flask模板
在模板中{{ variable }}结构表示变量,是一种特殊的占位符,告诉模板引擎这个位置的值,从渲染模板时使用的数据中获取;Jinja2除了能识别基本类型的变量,还能识别{};
py3study
2020/01/16
2.7K0
宏、继承、包含、特殊变量
大家可能是第一次接触这个字,在这里是什么意思呢?宏其实就类似于python中的函数,宏的作用就是在模板中重复利用代码,避免代码冗余。
Python进击者
2019/09/25
1.4K0
Flask 入门系列教程(三)
在通常的 Web 程序中,访问一个 URL 地址,一般都会返回一个 HTML 页面,而我们的数据就是嵌套在这些 HTML 代码当中的,再辅以 JavaScript 和 CSS 等,就组成了一个完整的前端页面了。
周萝卜
2020/10/10
1.2K0
Flask 入门系列教程(三)
Flask入门很轻松(三)—— 模板
转载请在文章开头附上原文链接地址:https://www.cnblogs.com/Sunzz/p/10959471.html
py3study
2020/01/15
2.1K0
Flask模板和静态文件(二)
在实际应用中,我们通常会使用多个页面,它们之间存在共同的布局和样式。为了避免重复编写相同的代码,我们可以使用模板继承来减少工作量。在Jinja2模板语言中,我们可以使用'block'和'extends'语句来实现模板继承。
堕落飞鸟
2023/05/05
2860
Django模板标签
==, !=, >=, <=, >, < and, or, not, in, not in这些操作符都可以在模板中使用
星哥玩云
2022/09/14
1.7K0
Flask学习笔记-Flask模板集成Bootstrap 顶
Flask模板集成Bootstrap。一般情况下Flask都是搭配Jinja2模板引擎来实现视图展现,不过现在Bootstrap比较流行,内置的样式也比较好看,有利于提高开发效率,本篇文章就是讲解在Flask如何集成Bootstrap框架。
bdcn
2018/09/12
2.1K0
Flask学习笔记-Flask模板集成Bootstrap
                                                    顶
Python Web - Flask笔记3
if条件判断语句必须放在{% if statement %}中间,并且还必须有结束的标签{% endif %}。和python中的类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,()来进行逻辑合并操作。
YingJoy_
2018/08/02
8040
Jinja2语法小记
如果user为传入模板中的字典变量,则我们可通过”.“获取它的键值。 eg:user.username user.username等价于user[‘username’]
Cloud-Cloudys
2020/07/06
1.6K0
Django 模板继承4.2
模板继承 模板继承可以减少页面内容的重复定义,实现页面内容的重用 典型应用:网站的头部、尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义 block标签:在父模板中预留区域,在子模板中填充 extends继承:继承,写在模板文件的第一行 定义父模板base.html { %block block_name%} 这里可以定义默认值 如果不定义默认值,则表示空字符串 { %endblock%} 定义子模板index.html { % extends "base.html" %} 在子模板中使用bl
Lansonli
2021/10/09
6310
Flask Web 极简教程(二)- Flask 模板(Part E)
宏,相当于函数,可以把常用功能抽取出来,实现可重用。HTML 中也会出现重复的代码,将重复的 HTML 代码抽取出来就成为模板的宏,模板的宏是可以写在单独的 HTML 文件中。
RiemannHypothesis
2022/09/26
6470
Flask Web 极简教程(二)- Flask 模板(Part E)
HTML|Flask之模板继承
模板继承是jinja里面最有力的部分了。就相当于在模板里面创建一个基础的骨架,里面的内容一般是一个网站中的常用元素,比如说网页的头部与尾部。这样下次需要用的话我们直接继承就好了。
算法与编程之美
2019/11/24
6K0
HTML|Flask之模板继承
django 1.8 官方文档翻译:4-2-1 Django模版语言
本文将介绍Django模版系统的语法。如果您需要更多该系统如何工作的技术细节,以及希望扩展它,请浏览 The Django template language: for Python programmers.
ApacheCN_飞龙
2022/11/27
1.2K0
带你认识 flask 的模板
在终端会话中设置环境变量FLASK_APP=microblog.py,然后执行flask run命令来运行应用。包含这个应用的Web服务启动之后,你可以通过在Web浏览器的地址栏中键入URL http://localhost:5000/ 来验证。
公众号---人生代码
2019/11/07
1K0
带你认识 flask 的模板
Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中。 1 2 3 4 def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse
用户1214487
2018/01/24
2.6K0
flask框架(二)
设置cookie:response.set_cookie(key,value,max_age)
小闫同学啊
2019/07/18
1.2K0
flask框架(二)
flask框架(二)配套代码
1、cookie.py """ - 解释: 用来保持服务器和浏览器交互的状态的, 由服务器设置,存储在浏览器 - 作用: 用来做广告推送 - cookie的设置和获取 - 设置cookie: response.set_cookie(key,value,max_age) - max_age: 表示cookie在浏览器的存储时间,单位是秒 - 获取cookie: request.cookies.get("key") """ from flask import Flask, make_res
小闫同学啊
2019/07/18
1.3K0
Python Flask模块
模块是一个包含响应文本的文件,其中包含占用位变量表示的动态部分,其具体值只在请求的上下文中才知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程称为渲染。为了渲染模块,Flask使用一个名为Jinja2的强大模板引擎。 一、Jinja2模板引擎 形式最简单的Jinja2模板就是一个包含响应文本的文件。 <h1>Hello,World!</h1> <h1>Hello,{{name}}!</h1> 1、渲染模板 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板。在下一个hel
用户1173509
2018/01/17
1.7K0
Python Flask模块
模板标签
if语句和python中的类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,in,not in来进行逻辑合并操作
星哥玩云
2022/09/14
6180
相关推荐
Flask 模板 - 宏、继承、包含
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验