核心提示:flask成长记(二)蜗牛真的是蜗牛啊,就jinja2这么个东西也抽象的暂且理解不了。不过也真是,你弄那么复杂干什么啊?说的装逼的。这么理解jinja2这个东西:先把引擎这俩字儿抛开。一般情况下,会有...
flask成长记(二)
蜗牛真的是蜗牛啊,就jinja2这么个东西也抽象的暂且理解不了。
不过也真是,你弄那么复杂干什么啊?说的装逼的。
这么理解jinja2这个东西:先把引擎这俩字儿抛开。
一般情况下,会有你提交给服务器东西,服务器存入到数据库和服务器返回给用户数据这两个操作。
模板是用在后面这个返回给用户这个操作。
你总不可能在函数中返回一堆HTML代码吧?虽然这的确可以。
于是也不知道哪个发明了模板,分离了前台和后台,前台的人做好html,后边儿得人弄后台。
但是前后台怎么联系呢?
前台的HTML文件留出若干个空位,后台的人拿到这个有空位的HTML文件,把需要的数据填上去,返回给用户。
那么填数据这个动作就是渲染。
是的你没听错,听起来那么高大上的渲染其实就是个很low的填空空。
jinja2识别的变量
Jinja2 能识别所有类型的变量:
A value from a dictionary: {{ mydict['key'] }}.
A value from a list: {{ mylist[3] }}.
A value from a list, with a variable index: {{ mylist[myintvar] }}.
A value from an object's method: {{ myobj.somemethod() }}.
过滤器
可以使用过滤器修改变量,过滤器名添加在变量名之后,中间使用竖线分隔。例如,下述
模板以首字母大写形式显示变量 name 的值:
Hello, {{ name|capitalize }} 常用的过滤器 safe 渲染值时不转义 capitalize 把值的首字母转换成大写,其他字母转换成小写 lower 把值转换成小写形式 upper 把值转换成大写形式 title 把值中每个单词的首字母都转换成大写 trim 把值的首尾空格去掉 striptags 渲染之前把值中所有的 HTML 标签都删掉 完整的过滤器列表可在 Jinja2 文档( https://jinja.pocoo.org/docs/templates/#builtin-filters)中 查看。
控制结构
Jinja2 提供了多种控制结构,可用来改变模板的渲染流程。本节使用简单的例子介绍其中
最有用的控制结构。
下面这个例子展示了如何在模板中使用条件控制语句: {% if user %} Hello, {{ user }}! {% else %} Hello, Stranger! {% endif %} 另一种常见需求是在模板中渲染一组元素。下例展示了如何使用 for 循环实现这一需求:
- {% for comment in comments %}
- {{ comment }}
- {% endfor %}