# 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}}
# 自定义标签库
```