flask的宏 macro

1、把它看作jinja2的一个函数,这个函数可以返回一个html字符串

2、目的:代码可以复用,避免代码冗余

定义的两种方式:

1、在模版中直接定义:类似于macro1.html中定义方式

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>宏的定义</title>
</head>
<body>
{#定义宏#}
{% macro form(action,value='登陆',method='post') %}

    <form action="{{ action }}" method={{ method }}>
        <input type="text" placeholder="用户名" name="username">
        <input type="password" placeholder="密码" name="password">
        <input type="submit" value="{{ value }}">
    </form>

{% endmacro %}

{#调用宏#}
{{ form('/') }}

</body>
</html>
复制代码

 2、将所有的宏提取到一个模版中macro.html,导入方法:

{% import 'macro.html' as xxx %}

{{ xxx.宏名字(参数) }}

macro/macro.html 定义宏的模版

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>宏的定义</title>
</head>
<body>
{#定义宏#}
{% macro form(action,value='登陆',method='post') %}

    <form action="{{ action }}" method={{ method }}>
        <input type="text" placeholder="用户名" name="username">
        <input type="password" placeholder="密码" name="password">
        <input type="submit" value="{{ value }}">
    </form>

{% endmacro %}

</body>
</html>
复制代码

macro/macro2.html 调用宏

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>宏的使用2</title>
</head>
<body>
{% import 'macro/macro.html' as macro with context %}
{{ macro.form('/',value='注册') }}
</body>
</html>
复制代码

 3、声明变量的方法

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>宏的使用2</title>
</head>
<body>

{% set username = 'zhansan' %}
{{ username }}

{% with num=1000  %}
    {{ num }}
{% endwith %}

</body>
</html>
复制代码

总结:

变量:{{ 变量 }}

块:

{% if 条件 %}......{% endif %}

{% for 条件 %}......{% endfor %}

{% block 条件 %}......{% endblock %}

{% macro 条件 %}......{% endmacro %}

 

{% include '' %} 包含

{% import '' %} 导入宏

{% extends '' %} 模版继承

 

{{ url_for('static',filename=' ')}} 导入静态文件

{{ macro_name(xxx) }} 调用宏

view:

@app.route('/',endpoint='',methods=['GET','POST'])

def index():

    直接使用request

    return response| ' ' |render_template('xxx.html')

template:

   模版语法

 

posted @   fat_girl_spring  阅读(128)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2020-09-14 mongodb安全认证
点击右上角即可分享
微信分享提示