jinja
今天看了下 jinja 的文档,做一下总结。其实也是粗略过了一遍。一是因为之前多次查过jinja2的语法和一些用法。二是,细看的话,其实很多东西,看了也记不住,只有用的时候才能记得住。
start jinja
安装
pip install Jinja2
Basic API Usage
>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')
>>> template.render(name='John Doe')
u'Hello John Doe!'
最基本的用法就是这么简单,但是实际使用中这些是不够的
API
Environment
是 jinja 的一个核心对象,Environment
这个词用的真的很贴切,把使用 jinja 的环境都集成到这个对象里了。
class jinja2.Environment([options])
Environment
有很多 options,最重要的是loader,loader 是从哪里加载模板,比如文件系统。说白了,就是模板是在哪里的。
是在哪个目录下,还是在那个包了的。FileSystemLoader
就是从文件系统中找模板文件。
get_template
这个方法,就在FileSystemLoader
所指定的目录中,设置具体是哪个模板文件。
render
方法,通过传递参数,渲染模板。
以上就是常规使用 jinja 的方法了
举例如下:
py文件:
import os
import sys
from jinja2 import Environment, FileSystemLoader
cwd = os.path.dirname(os.path.abspath(sys.argv[0]))
env = Environment(loader=FileSystemLoader(cwd))
foo_html_template = env.get_template("foo.html")
foo_html = foo_html_template.render(foo="FOO", bar='<')
print(foor_html)
foo_html:
foo: {{ foo }}
bar: {{ bar|e }}
其中,e
是转义 filter
结果为:
foo: FOO
bar: <
模板语法和语义
这个方面也不想多写了。就像是 python 的库函数一样。是必须要知道的,文档里面已经写的很清楚了, 自己总结总觉得都不太好,因为不可能有文档全面和准确,所以就参考文档吧