代码复用

  • 解释:相当于python中的函数,定义好一段功能,在需要的时候进行调用即可

  • 定义格式:

      {% macro 宏命(参数) %}
      
      {% endmacro %}
    
  • 使用格式:

      // 使用当前文件定义好的宏
      {{ 宏名(参数) }}
      
      // 使用外部文件定义好的宏
      {{% import '文件' as 别名 %}}
      {{ 别名.宏名(参数) }}
    

示例:
python:

from flask import Flask, render_template

app = Flask(__name__)


@app.route('/')
def index():
    return render_template("file06_macro.html")


if __name__ == '__main__':
    app.run(debug=True)

file06文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{# 定义宏 #}
{% macro my_macro(name,password) %}
    用户名:<input type="text" value="{{ name }}"><br>
    密码:<input type="password" value="{{ password }}"><br>
{% endmacro %}

{# 调用当前文件宏 #}
{{ my_macro('zhangsan', '111111111') }}

{# 调用其他文件宏 #}
{% import 'file07other_macro.html' as other %}
{{ other.my_input() }}
{{ other.my_div() }}

</body>
</html>

file07文件:

{% macro my_macro(name,password) %}
    用户名:<input type="text" value="{{ name }}"><br>
    密码:<input type="password" value="{{ password }}"><br>
{% endmacro %}


{% macro my_input() %}
    <h1>这是h1宏文件</h1>
{% endmacro %}


{% macro my_div() %}
    <div>这是div宏文件</div>
{% endmacro %}

结果展示:
在这里插入图片描述

继承(常用)

  • 解释:一个子模板继承自父模板

  • 作用:共性抽取,代码复用

  • 父模板

    1. 所有子类都具有的相同的内容的,在父模板中直接写死
    2. 每个子类的模板中不一样的内容,使用block模板定义好
  • 子模板

    1. 根据子类自己的需求,去重写父类中的block对应的内容
    2. 如果重写之后,还想保留父类的内容,那么使用{{ super() }}
    3. 继承格式:{% entend ‘父文件名’ %},写在页面的顶部
  • 注意点
    定义的block格式

      {% block 名称 %}
    
      {% endblock %}
    

示例:
python代码:

from flask import Flask, render_template

app = Flask(__name__)


@app.route('/')
def index():
    return render_template("file08zi.html")


if __name__ == '__main__':
    app.run(debug=True)

父类代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{# 标题部分 #}
{% block titleBlock %}
    <h1>标题</h1>
{% endblock %}

{# 内容部分 #}
{% block contentBlock %}
    <P>1231312</P>
{% endblock %}

{# 底部 #}
<div>
    <a href="#">
        点我
    </a>
</div>
</body>
</html>

子类代码:

{% extends 'file09fu.html' %}

{# 重写标题与父类保留 #}
{% block titleBlock %}
    {{ super() }}
    <h1>标题二</h1>
{% endblock %}

{# 重写正文部分 #}
{% block contentBlock %}
    aaaa
{% endblock %}

结果展示:
在这里插入图片描述

包含

  • 解释:在一个文件中完全拥有另一个文件,不够灵活,没法扩展

  • 格式:

      方式一:
      {% include '文件' %}
      
      方式二:
      {% include '文件' ignore missing %}
    
  • 注意点:ignore missing 如果包含的文件不存在,也不会报错

示例:
python代码:

from flask import Flask,render_template

app = Flask(__name__)


@app.route('/')
def index():
    return render_template('file10_include.html')


if __name__ == '__main__':
    app.run(debug=True)

include代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% include 'file01.html' ignore missing %}
</body>
</html>

file01代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 300px;
            height: 300px;
            background: red;
        }
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>

结果展示:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值