python中使用mako模版Template
最近在开发中用到了发送邮件的功能,邮件内容要求是html,所以就用到了mako的模版功能。
mako模版可以让我们在后端进行html的数据填充,从而获取html文件
使用方法:
1、pip安装Mako
pip install Mako
2、设置发送邮件的模版
<div style="margin:0px 0 10px 0px">
<p>您好!您所申请的虚拟机详情</p>
<P>${title}</P>
<div style="margin-top:0px">
<P>详情:</P>
<table style="border: 1px solid #D2D2D2; font-size: 14px;">
<tr>
<th style="padding: 10px; text-align: center; border-right: 1px solid #D2D2D2;">IP</th>
<th style="padding: 10px; text-align: center; border-right: 1px solid #D2D2D2;">端口</th>
<th style="padding: 10px; text-align: center; border-right: 1px solid #D2D2D2;">用户名</th>
<th style="padding: 10px; text-align: center; border-right: 1px solid #D2D2D2;">密码</th>
<th style="padding: 10px; text-align: center; border-right: 1px solid #D2D2D2;">创建状态</th>
<th style="padding: 10px; text-align: center; border-right: 1px solid #D2D2D2;">Agent安装状态</th>
<th style="padding: 10px; text-align: center;">业务模块迁移状态</th>
</tr>
%for data in datas:
<tr>
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; border-right: 1px solid #D2D2D2;">${data['ip']}</td>
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; border-right: 1px solid #D2D2D2;">${data['port']}</td>
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; border-right: 1px solid #D2D2D2;">${data['account']}</td>
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; border-right: 1px solid #D2D2D2;">${data['password']}</td>
%if data['create_status'] == 'FAILED':
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; border-right: 1px solid #D2D2D2; color: #FF5656;">${data['create_status']}</td>
%else:
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; border-right: 1px solid #D2D2D2; color: #34D97B;">${data['create_status']}</td>
%endif
%if data['agent_status'] == 'FAILED':
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; border-right: 1px solid #D2D2D2; color: #FF5656;">${data['agent_status']}</td>
%else:
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; border-right: 1px solid #D2D2D2; color: #34D97B;">${data['agent_status']}</td>
%endif
%if data['transfer_status'] == 'FAILED':
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; border-right: 1px solid #D2D2D2; color: #FF5656;">${data['transfer_status']}</td>
%else:
<td style="padding: 10px; text-align: center; border-top: 1px solid #D2D2D2; color: #34D97B;">${data['transfer_status']}</td>
%endif
</tr>
%endfor
</table>
</div>
</div>
3、使用Template
from mako.template import Template
email_content = Template(common.EMAIL_TEMPLATE).render(title=vm_detail, datas=content)
print email_content
email_content就是我们最终需要的html代码。
常用语法
变量
${name}
在{}中可以执行Python语句,比如${name.upper()}会转为大写
循环
% for i in l:
${i}
% endfor
条件
% if i == 1:
${i}
%else:
${i+1}
% endif
标签:
mako
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」