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:
模版语法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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安全认证