hehey-htemplate 最好用模板引擎 介绍及使用

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

  
```
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值