# hehey-htemplate #### 介绍 hehey-htemplate 是一个python 轻量的模板引擎,其主要特点有:易学,示例全,功能全面,html友好标签,编译速度快,易扩展 与其他模板引擎对比,其简单易学,速度快(大概1000次编译,800 多毫秒),随时随地编写自己的标签库.
#### 源码下载
https://gitee.com/chinahehe/hehey-htemplate
#### 功能列表
- 支持{},以及<> 标签混合使用
- 支持layout(模板继承) 标签
- 支持block 模块
- 支持include 标签
- 支持if 标签
- 支持for dict,list 标签
- 支持注释
- 支持python 代码标签
- 支持调用方法
- 支持加载静态文件
- 定义变量
- 支持不解析标签
- html 标签
- 自定义过滤器
- 优化方法的调用方式,支持| 方法,支持定义参数
- 支持标签,empty
- 支持导入自定义过滤器
- 支持导入自定义标签
- 支持模板文件缓存代码至内存
- 支持代码缓存过期时间
- 支持模板后缀自定义
- js,css,img 标签
- 提供小物件(widget)
#### 基本示例
更多示例请查看examples目录
index.html 模板文件
```
{taglib name="html"}
{layout file="base.html"}
<body>
{for name="data" value="index"}
<title>{$index}</title>
<div>{:index|js}</div>
<div>{:index|css|js}</div>
<div>{:index|res=2}</div>
{/for}
{if condition="age == 1"}
<h1>{$age}</h1>
{elif condition="age == 2"}
<h1>hello world</h1>
{else}
<h1>什么鬼</h1>
{/if}
{for name="dicts" index="index" value="val"}
<title>{$dicts[val]}-{$index}</title>
{/for}
{list name="data" index="index" key="key" value="val"}
<title>{$val}:{$key}-{$index}</title>
{/list}
{dict name="dicts" index="index" key="key" value="val"}
{set oo = "'mnnmd'" mdd="1"}
<title>{$val}:{$key}-{$index}{oo}-{mdd}</title>
{if condition="index == 1"}
{raw break}
{/if}
{/dict}
{include file="footer.html"}
<html:select id="2222" />
<html:css href="css/core.min.css" rel="stylesheet" />
<html:js src= "js/dist/core.min.js?v=2.1.4" />
<html:img src="images/bg_jins.png" alt="" />
{:widget('site.widgets.Menu.Menu:index',widdata)}
</body>
```
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" : '/',
# 是否启用标签规则,开启后,匹配表达式 <import name="eduhome.name.yong" />
"onTag" : True,
# 标签起始符
"tagStart" : '<',
# 标签结束符
"tagEnd" : '>',
# 结束标签结束符号
"tagEndSign" :'/',
# 系统标签,默认自动加载sys 表达式,默认标签,书写时无需写入前缀,比如<css href="xxx" />
"sysTags" : ['sys'],
# 自定义标签,书写时必须写入前缀,比如 标签名称html,则css 标签的书写规则为: <html:css href="xxx" />
"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}}
# 自定义标签库
```