欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

代码复用

程序员文章站 2024-02-23 21:48:10
...

代码复用

  • 解释:相当于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>

结果展示:
代码复用

相关标签: flask