flask 模板block super()的讲解

Flask强大的地方就可以引用模板,而且非常方便。

  这里不得不介绍block这个概念。

  模板的文件一般放在templates文件夹下,我们这里新建一个HTML文件,存放模板,‘base.html

  在这里面也,编排了整个页面的排版,里面会用到很多block的占位符

  每个block都代表一段html语句块,而这些块在哪里定义呢,可以在当前的base.html中定义,也可以在别的html中定义。反正要有一处定义,没有定义块只是没有效果而已

  定义的时候,home.html 顶部必须说明继承关系(如果py文件链接的是home.html,但home.html引用了base.html的模板,就要说明)

{% extends ‘base.html‘ %}

  块的定义格式,endblock 后面块名可以省略,有时候加上会让结构更加明晰

{% block 块名 %}
    块内容
{% endblock (块名)%}

  定义了块之后,base.html中对应的块,就会被这些块内容覆盖。

  • 块的覆盖情况

  有一种情况,base.html中定义了block B 块内容1,但是在home.html也定义block B 块内容2,注意这时会优先显示内容2,因为把内容1覆盖了。

理解起来,就是base.html是通用模板,我们可以直接引用过来,没有问题,但是也可以自定义块,修改通用模板的内容,达到我们想要的效果。

  还有一种情况,我们既不想不覆盖通用模板的内容,又想在其基础上,增加一些东西,这也是可以的。

  举个例子:在base.html

<footer>
    {% block footer %}
    <p>Posted:Bikmin</p>
        <p>Contact with:<a href="[email protected]">[email protected]</a> </p>
    {% endblock %}
</footer>

  如果我们不再自定义块,就会使用base.html通用模板的内容,效果如下

  

  觉得这个模板还行,不想覆盖,还想在这个基础上再添加些东西,想要上面添加一条水平线作为分隔符,该怎么做呢

  做法是,也是在home.html重新定义块,但是需要用到super()函数

{% block footer %}
    <hr>
    {{ super() }}
{% endblock %}

  {{ super() }} 就表示了通用模板里的内容

  在一个项目HTML中,块被定义多次,是会被覆盖的。

  有时候,我们想引用块的内容,又不想写一串很长的块内容,这时候可以用下面的语法,不管在哪个html文件里定义的都可以,只要有继承关系

{{ self.块名() }}

原文地址:https://www.cnblogs.com/qunxiadexiaoxiangjiao/p/9595087.html

时间: 2024-07-30 19:04:24

flask 模板block super()的讲解的相关文章

Flask Web Development - Flask 模板1 - 模板机制&Jinja2引擎

节选自PartI Chapter3,这个chapter主要讲模板工作原理,这里讲的就是Jinja2这个模板,另外还提到了Flask-Bootstrap及Flask-Moment两个插件,前者对Flask使用Bootstrap做了些封装,后者对moment.js做了些封装.内容较多,估计分开搞. 模板存在的意义 可维护性高的代码是结构良好且整洁的. 当用户在网站注册一个账户时,他在表单里填入邮箱跟密码,并点击提交按钮.在server端就收到一个包含这些数据的request,再由Flask分发到相应

Flask模板jinja2

模板预热 在渲染模板的时候,默认会从项目根目录下的'templates'目录下查找模板. 如果不想把模板文件放在'templates'目录下,那么可以在'Flask'初始化的时候指定'template_folder'来指定模板的路径 模块传参数 1.在使用'render_template'渲染模板的时候,可以传递关键字参数.以后直接在模板中使用就可以了 2.如果你的参数过多,那么可以将所有的参数放到一个字典中,然后再传这个字典参数的时候,使用两个星号,将字典打散成关键字参数 3.如果想要再HTM

flask模板语句

flask模板语句1.模板中控制语句    *Jinja2 模板同样支持控制语句,像在 {%-%} 块中,代码: 1 <html> 2 <head> 3 {% if title %} 4 <title>{{title}} - microblog</title> 5 {% else %} 6 <title>Welcome to microblog</title> 7 {% endif %} 8 </head> 9 <b

四 .Flask 模板 中间件 特殊装饰器 基础知识(使用)

一 Flask 模板 中间件 特殊装饰器 1 .Flask 模板语法直接看面效果 https://www.cnblogs.com/lovershowtime/p/11349576.html    模板  和Django模板类似 edit.html<form> asdfasdf asdfasdf asdf asdf 哈啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 </form> login.html <!DOCTYPE html> <html lang="zh-C

5. Flask模板

一.Jinja2模板引擎 1. 定义 ? 视图函数的主要作用是生成请求的响应,这是最简单的请求.实际上,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本.本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容. ? 模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需要从使用的数据中获取.使用真实值替换变量,再返回最终得到的字符串,这个过程称为"渲染".Flas

总结django flask模板不同的地方

一.应用AngularJS , 对{{}}的处理不同 1.django模板使用AngularJS:{ % verbatim % }姓名: {{ firstName + " " + lastName }}{ % endverbatim % } 2.flask模板使用AngularJS:解决flask jinja2和angularJS变量冲突的方法{ % raw % } 姓名: {{ firstName + " " + lastName }} { % endraw %

flask模板的基本用法、模板语法、渲染模板、模板辅助工具

flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTML代码中插入变量,这时我们需要使用模板引擎(template engine).借助模板引擎,我们可以再HTML文件中使用特殊的语法来标记变量,这类包含固定内容和动态部分的可重用文件称为模板(template). 模板引擎的作用就是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输

FlaskWebDevelopment - Flask模板4 - url_for()在模板中生成链接

这里讲用url_for()来简化在模板中生成链接的操作.以产生静态文件链接为例. url_for() 直接在模板里写URL,当页面复杂了之后很麻烦,而且可能对代码产生依赖,代码改动后链接就失效了. URL可以通过Flask提供的url_for()来动态产生.这个函数以视图函数名或者注册视图函数时的端点名作为参数,返回相应的URL. 比如在目前的代码中: url_for('index')返回\, url_for('index', _external=True)返回http://localhost:

FlaskWebDevelopment - Flask模板2 - Flask-Bootstrap插件

这部分还是属于模板,讲Flask里嵌入Bootstrap,利用Flask-Bootstrap插件.这个插件存在的意义就是简化这个嵌入的操作过程,当然不用也可以. 通过Flask-Bootstrap集成Bootstrap Bootstrap的介绍就不翻了. Bootstrap作为一个client端的框架,他最终存在于HTML文件中,做Flask应用开发的话,应该把它放入模板中. Flask-Bootstrap插件可以简化这个集成操作,用pip安装: $ pip install flask-boot