golang-pongo2模板引擎-csdn博客


本站和网页 https://blog.csdn.net/zhenjingcool/article/details/133075181 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

golang-pongo2模板引擎-CSDN博客
golang-pongo2模板引擎
最新推荐文章于 2022-10-21 15:48:44 发布
zhenjingcool 阅读量49 收藏 点赞数
版权声明:本文为博主原创文章,遵循
CC 4.0 BY-SA
版权协议,转载请附上原文出处链接和本声明。
本文链接:
https://blog.csdn.net/zhenjingcool/article/details/133075181
版权
官网地址:
https://pkg.go.dev/github.com/flosch/pongo2
模板就是一个简单的文本文件。它可以生成任何基于文本的格式(HTML、XML、CSV、markdown等)。
模板包含变量(在求值时被替换为值)和标签(控制模板的逻辑)。
pongo2是一个模板引擎,类似于jsp
1 特性
1 语法和特性集兼容于Django 1.7,Django模板见官网
https://django.readthedocs.io/en/1.7.x/topics/templates.html
2 类C表达式
integers and complex expressions
{ 10-100 }}
{ -(10-100) }}
{ -(-(10-100)) }}
{ -1 * (-(-(10-100))) }}
{ -1 * (-(-(10-100)) ^ 2) ^ 3 + 3 * (5 - 17) + 1 + 2 }}
floats
{ 5.5 }}
{ 5.172841 }}
{ 5.5 - 1.5 == 4 }}
{ 5.5 - 1.5 == 4.0 }}
mul/div
{ 2 * 5 }}
{ 2 * 5.0 }}
{ 2 * 0 }}
{ 2.5 * 5.3 }}
{ 1/2 }}
{ 1/2.0 }}
{ 1/0.000001 }}
logic expressions
{ !true }}
{ !(true || false) }}
{ true || false }}
{ true or false }}
{ false or false }}
{ false || false }}
{ true && (true && (true && (true && (1 == 1 || false)))) }}
float comparison
{ 5.5 <= 5.5 }}
{ 5.5 < 5.5 }}
{ 5.5 > 5.5 }}
{ 5.5 >= 5.5 }}
remainders
{ (simple.number+7)%7 }}
{ (simple.number+7)%7 == 0 }}
{ (simple.number+7)%6 }}
in/not in
{ 5 in simple.intmap }}
{ 2 in simple.intmap }}
{ 7 in simple.intmap }}
{ !(5 in simple.intmap) }}
{ not(7 in simple.intmap) }}
{ 1 in simple.multiple_item_list }}
{ 4 in simple.multiple_item_list }}
{ !(4 in simple.multiple_item_list) }}
{ "Hello" in simple.misc_list }}
{ "Hello2" in simple.misc_list }}
{ 99 in simple.misc_list }}
{ False in simple.misc_list }}
issue #48 (associativity for infix operators)
{ 34/3*3 }}
{ 10 + 24 / 6 / 2 }}
{ 6 - 4 - 2 }}
issue #64 (uint comparison with int const)
{ simple.uint }}
{ simple.uint == 8 }}
{ simple.uint == 9 }}
{ simple.uint >= 8 }}
{ simple.uint <= 8 }}
{ simple.uint < 8 }}
{ simple.uint > 8 }}
string concatenation
{ "a" + "b" }}
{ 1 + "a" }}
{ "a" + "1" }}
View Code
3 表达式中的复杂函数调用
{ simple.func_add(simple.func_add(5, 15), simple.number) + 17 }}
{ simple.func_add_iface(simple.func_add_iface(5, 15), simple.number) + 17 }}
{ simple.func_variadic("hello") }}
{ simple.func_variadic("hello, %s", simple.name) }}
{ simple.func_variadic("%d + %d %s %d", 5, simple.number, "is", 49) }}
{ simple.func_variadic_sum_int() }}
{ simple.func_variadic_sum_int(1) }}
{ simple.func_variadic_sum_int(1, 19, 185) }}
{ simple.func_variadic_sum_int2() }}
{ simple.func_variadic_sum_int2(2) }}
{ simple.func_variadic_sum_int2(1, 7, 100) }}
4 易于创建新的过滤器和标记的API(包括解析参数)
 5 宏
Begin
% macro greetings(to, from=simple.name, name2="guest") %}
Greetings to {
{ to }} from {
{ from }}. Howdy, {% if name2 == "guest" %}anonymous guest{% else %}{
{ name2 }}{% endif %}!
% endmacro %}
{ greetings() }}
{ greetings(10) }}
{ greetings("john") }}
{ greetings("john", "michelle") }}
{ greetings("john", "michelle", "johann") }}
% macro test2(loop, value) %}map[{
{ loop.Counter0 }}] = {
{ value }}{% endmacro %}
% for item in simple.misc_list %}
{ test2(forloop, item) }}{
% endfor %}
issue #39 (deactivate auto-escape of macros)
% macro html_test(name) %}
<p>Hello {
{ name }}.</p>
{ html_test("Max") }}
Importing macros
% import "macro.helper" imported_macro, imported_macro as renamed_macro, imported_macro as html_test %}
{ imported_macro("User1") }}
{ renamed_macro("User2") }}
Chaining macros{
% import "macro2.helper" greeter_macro %}
{ greeter_macro() }}
End
2 Django模板语言
上面我们讲过,pongo2语法兼容Django模板语法,我们先看一下Django的模板语言
官网:
模板就是一个简单的文本文件。它可以生成任何基于文本的格式(HTML、XML、CSV等)。
示例
{% extends "base_generic.html" %}
{% block title %}{
{ section.title }}{% endblock %}
{% block content %}
<h1>{
{ section.title }}</h1>
{% for story in story_list %}
<h2>
<a href="{
{ story.get_absolute_url }}">
{ story.headline|upper }}
</a>
</h2>
<p>{
{ story.tease|truncatewords:"100" }}</p>
{% endfor %}
{% endblock %}
2.1 变量
{ variable }}
当模板引擎遇到一个变量时,它将计算该变量并将其替换为结果
2.2 过滤器filter
{ name|lower }}
上面过滤器lower的作用是把变量name转为小写字母
带参数的过滤器,作用取bio前30个字符 
{ bio|truncatewords:30 }}
用逗号和空格连接一个列表 
{ list|join:", " }}
30多个内嵌的过滤器参考这里:
https://django.readthedocs.io/en/1.7.x/ref/templates/builtins.html#ref-templates-builtins-filters
常用的几个过滤器
1 default,给出变量的默认值, 
{ value|default:"nothing" }}
2 length, 
{ value|length }}
2.3 Tags
格式 
{% tag %}
 或者 
{% tag %} ... tag contents ... {% endtag %}
20多个内嵌的Tag参考这里:
https://django.readthedocs.io/en/1.7.x/ref/templates/builtins.html#ref-templates-builtins-tags
常用的几个Tag
1 for
<ul>
{% for athlete in athlete_list %}
<li>{
{ athlete.name }}</li>
</ul>
for循环预设了几个在循环中使用的变量,并且,我们如果要使用这些变量,需要首字母大写,比如forloop.First
Variable
Description
forloop.counter
The current iteration of the loop (1-indexed)
forloop.counter0
The current iteration of the loop (0-indexed)
forloop.revcounter
The number of iterations from the end of the loop (1-indexed)
forloop.revcounter0
The number of iterations from the end of the loop (0-indexed)
forloop.first
True if this is the first time through the loop
forloop.last
True if this is the last time through the loop
forloop.parentloop
For nested loops, this is the loop surrounding the current one
{% for PCA in reportDataInfo.PCA_list %}
{% if not (forloop.First and forloop.Parentloop.First) %}
---
{% endif %}

if

elif
else
{% if athlete_list %}
Number of athletes: {
{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
Athletes should be out of the locker room soon!
{% else %}
No athletes.
3 autoescape
如果定义为on则,在其范围内的变量将进行html转义。
{% autoescape on %}
{ body }}
{% endautoescape %}
2.4 模板继承
我们可以通过模板继承,实现
例如,base.html
<html lang="en">
<body>
<div>这是公共部分</div>
<div>
{% block content %}这里可以在子模板中被覆盖{% endblock %}
</div>
</body>
</html>
child.html
{% extends "base.html" %}
{% for entry in blog_entries %}
<h2>{
{ entry.title }}</h2>
{ entry.body }}</p>
3 模板和数据的合并
上面主要讲的是模板的格式、语法等内容。
既然是模板引擎,当然具有渲染数据到模板的功能,下面我们以一个简单的例子进行讲解
tpl, err := pongo2.FromString("Hello {
{ name|capfirst }}!")
if err != nil {
panic(err)
// Now you can render the template with the given
// pongo2.Context how often you want to.
out, err := tpl.Execute(pongo2.Context{"name": "florian"})
fmt.Println(out) // Output: Hello Florian!
1 通过 
pongo2.FromString
pongo2.FromFile
 等api返回一个*Template类型的指针,它包含了模板。
2  
template.Execute(pongo2.Context{"name": "florian"})
 传递一个类似json的对象 
{"name": "florian"}
 执行template的Execute进行数据渲染到模板。其返回一个字符串out。out就是渲染后的模板。
优惠劵
关注
点赞
觉得还不错?
一键收藏
知道了
评论
官网地址:https://pkg.go.dev/github.com/flosch/pongo2模板就是一个简单的文本文件。它可以生成任何基于文本的格式(HTML、XML、CSV、markdown等)。模板包含变量(在求值时被替换为值)和标签(控制模板的逻辑)。pongo2是一个模板引擎,类似于jsp1 特性1语法和特性集兼容于Django 1.7,Django模板见官网https:...
复制链接
扫一扫
【go-zero】go-zero整合
pongo2
渲染html
模板
go渲染html go email
发送 go渲染html复杂table表格 (best practice)
CTRA®王大大技术中心
03-04
1332
【go-zero】
go-zero整合
发送
go渲染html复杂table表格
best practice
golang
-cross:使用CGO的
交叉编译器
03-31
构建基础映像(可选) docker build -f Dockerfile_builder -t goreng/
-cross-builder:1.15.1 . 请先按照指南
建立跨语言的图像docker build --build-arg GO_VERSION=1.16.2 --build-arg
GOLANG
_DIST_SHA=542...
参与评论
您还未登录,请先
登录
后发表或查看评论
Go Web 编程入门:Go
模板引擎
宇宙之一粟的技术漂泊之旅
05-16
28
​​Go
​​ 教程展示了如何使用
Golang
中使用
是一个库,旨在将
与数据结合起来以生成文档。
用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。
由静态数据和动态区域组成。动态区域稍后被数据替换。渲染函数稍后将
与数据结合起来。
用于...
Go
库:性能比较
分享身边生活经验blog
10-04
1179
库是编程语言生态系统的重要组成部分。Go 的标准库提供了强大的开箱即用的
库,但 Go 中也有多个社区构建的
库供开发人员使用。由于有多种选择,因此很难为您的特定用例选择最佳选择。本文将使用 Go 的基准测试工具,根据性能、功能和安全性比较一些最流行的
库。具体来说,我们将研究
中使用的一些常见操作(如条件操作、
嵌套和循环等),并对它们进行基准测试,让您了解每个
的性能和内存占用。
类似Django的
彭世瑜的博客
10-21
1090
译文:
是一种类似于Django语法的
语言(官方网站)。
example.html。示例1: 渲染字符串。
-hex-dumper
05-01
一个简单的十六进制转储库例程,用于需要深入研究二进制文件的诊断。 以十六进制显示字节。
随附gohexdump目录中的示例命令行工具。
go get github.com/glycerine/
-hex-dumper/...
...
-customimport:
-customimport
02-04
custoimport演示 怎么跑 更改本地主机名以用于域使用 /etc/hosts add 127.0.0.1 rongdemo.com 开始打包元网站 或者您可以使用一些静态网络服务器 cd web yarn start 使用Dep管理软件包 dep ensure
-100-Days:
- 100天从新手到大师
04-21
- 100天从新手到大师 作者:韩茹,Davie,Steven 最近有很多小伙伴都在寻找go语言完整学习资料,但是录制视频和教程都需要不少的时间,平时也在筹备Go语言学科的事情,所以时间上比较紧张,我和Davie老师分别...
-swaggerui-example:
的SwaggerUI生成示例
05-14
-swaggerui-example
-swaggerui-example是一个示例存储库,用于在您的
项目中使用SwaggerUI设置API文档。 详细说明可在。 API互动 可以通过访问localhost:8080 / swaggerui /访问SwaggerUI,有关...
音频功放电路图TA7232P.pdf
04-12
音频功放电路图TA7232P
06、ad0831_lcd_da0808_ds1302_24c64的应用.rar
最新发布
51系列单片机竞赛设计实例程序PROTEUS仿真
node-v16.18.1.tar.xz
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。
Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。
在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
.net网站管理系统.zip
管理系统,作为一种高效的企业运营管理工具,旨在通过集成化、系统化的手段,对组织内部的各类资源进行规划、协调、控制和优化,以实现企业战略目标,提升运营效率,增强核心竞争力。以下是对管理系统的详细介绍:
一、定义与构成
管理系统是指由硬件设备、软件应用、数据资源、人员以及相关管理制度共同构建的,用于处理、监控、分析和决策各类业务活动的综合信息系统。它通常包括以下几个核心组成部分:
数据采集模块:负责从各类业务环节中实时、准确地收集信息,形成企业的基础数据资源。
数据分析模块:运用统计学、人工智能等技术对数据进行深度挖掘和智能分析,提供决策支持。
业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。
决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。
用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。
二、主要类型与功能
管理系统根据所针对的管理对象和领域,可分为多种类型,如:
人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬福利等人力资源全流程管理,提升人才效能。
客户关系管理系统(CRM):集中管理客户信息,优化销售、营销和服务流程,提升客户满意度和忠诚度。
供应链管理系统(SCM):整合供应商、制造商、分销商、零售商等供应链各环节,实现物流、资金流、信息流的协同运作。
企业资源计划系统(ERP):对企业内部财务、生产、采购、库存、销售等各项资源进行全面集成管理,提高整体运营效率。
项目管理系统(PM):对项目全生命周期进行规划、跟踪、控制,确保项目按时、按质、按预算完成。
三、价值与优势
提高效率:自动化工作流程、标准化业务操作,显著减少人工干预,提升工作效率。
优化决策:实时数据分析与预测,提供精准的决策依据,助力管理层做出明智选择。
资源整合:打破部门壁垒,实现信息共享,优化资源配置,降低运营成本。
合规风控:内置法规遵循机制,强化内部控制,降低经营风险。
持续改进:通过对系统数据的持续监控与分析,驱动业务流程持续优化,促进企业创新与发展。
总的来说,管理系统作为现代企业管理的重要工具,以其强大的数据处理能力、智能化的决策支持和高效的业务流程管理,有力推动了企业的数字化转型,助力企业在日益激烈的市场竞争中保持竞争优势。
2023年云南咖啡豆发展.pdf
C#客户端图书管理系统.zip
node-v18.13.0.tar.xz
省级新质生产力-原始数据集.xlsx
详细介绍:https://blog.csdn.net/li514006030/article/details/137691273
数据年份:2010-2022年
Sora AI Video Preview Case Sora AI 视频模版项目
Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署
这是Sora AI Videos的案例站点,使用此项目可以帮助你快速构建Sora AI的演示项目。
这个项目基于 T3 Stack 项目,如果你想对此项目架构有跟深入的了解可以查看官方文档。
UI部分基于 DaisyUI,快速使用tailwind构建精美的网站
-jwt
09-16
-jwt是一个在Go中实现JWT的流行包。它提供了生成和验证JWT的功能,并且因其特性和易用性而受到欢迎。要使用
-jwt包,您需要在安装后创建一个Go文件并导入所需的包和模块。您可以使用`import`语句导入以下...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
CSDN认证博客专家
CSDN认证企业博客
码龄12年
暂无认证
123
原创
周排名
12万+
总排名
7479
访问
等级
1235
积分
粉丝
获赞
25
私信
热门文章
常用的组合逻辑电路
1105
钉钉H5微应用开发指南
589
计算机组成原理
315
kernel源码(二十三)Bochs运行linux0.11
275
应用对接gitlab api
273
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
最新文章
数据链路层设备-网卡和网桥
linux网络配置
2023年
20篇
2022年
84篇
2021年
19篇
目录
被折叠的 
 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额
3.43
前往充值 >
需支付:
10.00
取消
确定
下一步
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值