# hehey-htemplate **Repository Path**: chinahehex/hehey-htemplate ## Basic Information - **Project Name**: hehey-htemplate - **Description**: hehey-htemplate 是一个python 轻量的模板引擎,其主要特点有:易学,示例全,功能全面,html友好标签,编译速度快,易扩展 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2019-06-20 - **Last Updated**: 2024-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hehey-htemplate #### 介绍 hehey-htemplate 是一个python 轻量的模板引擎,其主要特点有:易学,示例全,功能全面,html友好标签,编译速度快,易扩展 与其他模板引擎对比,其简单易学,速度快(大概1000次编译,800 多毫秒),随时随地编写自己的标签库. #### 功能列表 - 支持{},以及<> 标签混合使用 - 支持layout(模板继承) 标签 - 支持block 模块 - 支持include 标签 - 支持if 标签 - 支持for dict,list 标签 - 支持注释 - 支持python 代码标签 - 支持调用方法 - 支持加载静态文件 - 定义变量 - 支持不解析标签 - html 标签 - 自定义过滤器 - 优化方法的调用方式,支持| 方法,支持定义参数 - 支持标签,empty - 支持导入自定义过滤器 - 支持导入自定义标签 - 支持模板文件缓存代码至内存 - 支持代码缓存过期时间 - 支持模板后缀自定义 - js,css,img 标签 - 提供小物件(widget) #### 基本示例 $\color{red}{更多示例请查看examples目录}$ index.html 模板文件 ``` {taglib name="html"} {layout file="base.html"} {for name="data" value="index"} {$index}
{:index|js}
{:index|css|js}
{:index|res=2}
{/for} {if condition="age == 1"}

{$age}

{elif condition="age == 2"}

hello world

{else}

什么鬼

{/if} {for name="dicts" index="index" value="val"} {$dicts[val]}-{$index} {/for} {list name="data" index="index" key="key" value="val"} {$val}:{$key}-{$index} {/list} {dict name="dicts" index="index" key="key" value="val"} {set oo = "'mnnmd'" mdd="1"} {$val}:{$key}-{$index}{oo}-{mdd} {if condition="index == 1"} {raw break} {/if} {/dict} {include file="footer.html"} {:widget('site.widgets.Menu.Menu:index',widdata)} ``` index.py ```python # 基础示例 from htemplate.View import View # 创建视图对象 view = View({ # 自定义模板根目录 'tplPath':'模板路径', }); data = { 'title': '基础示例', 'users': [ {"userid":1,"realName":"hehe"}, {"userid":2, "realName":"xixi"}, {"userid": 3, "realName": "难受!"}, ], 'stuNames': {"userid":1,"realName":"小红薯"}, "age": 3, } # 注入模板变量 view.assign('title',"从您的世界路过?") html = view.fetch('index',data) # 模板参数详细 conf = { # 模板文件扩展名 "suffix":'html', # 模板文件根路径 "tplPath":'', # 是否开启模板缓存,开启后,会自动缓存代码,加快模板解析的速度 "onCache": True, # 模板缓存文件目录,模板编译的python代码缓存在文件中,缓存文件存储此目录中 "cachePath":'', # 资源地址,比如js,css,img,默认提供static(静态资源路径),res(外部资源,比如上传的文件) 字典key "urls" : {}, # 模板缓存有效期,单位秒,0 表示无有效期 "timeout" : 3, # 表达式起始符 "expStart" : '{', # 表达式结束符 "expEnd":'}', # 结束表达式的结束符比如/ 则完整表达式为{/for} 或end,{endfor} "expEndSign" : '/', # 是否启用标签规则,开启后,匹配表达式 "onTag" : True, # 标签起始符 "tagStart" : '<', # 标签结束符 "tagEnd" : '>', # 结束标签结束符号 "tagEndSign" :'/', # 系统标签,默认自动加载sys 表达式,默认标签,书写时无需写入前缀,比如 "sysTags" : ['sys'], # 自定义标签,书写时必须写入前缀,比如 标签名称html,则css 标签的书写规则为: "customTags" : ['html'], }; # 自定义过滤器 from htemplate import reg_temp_filter @reg_temp_filter('css') def css_filter(self,cssUrl): return '{0}{1}'.format(self.template.urls['static'],cssUrl) # 过滤所有有风险的字符 @reg_temp_filter() def safe(self,value): value = self.xss(value) return value # 自定义上下文 from htemplate import reg_temp_context @reg_temp_context() def django(): return {"reqeust":{"mok":88}} # 自定义标签库 ```