美文网首页
Flask学习笔记之模板引擎Jinja2(四)

Flask学习笔记之模板引擎Jinja2(四)

作者: 容澄 | 来源:发表于2016-06-21 06:07 被阅读0次

随着程序内容改变,视图函数也有可能需要变化。模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请求的上下文中才能知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程称为渲染。为了渲染模板,Flask 使用了一个名为 Jinja2 的强大模板引擎。

变量

{{ name }}结构表示一个变量,它是一种特殊的占位符,告诉模板引擎这个位置的值从渲染模板时使用的数据中获取。Jinja2 能识别所有类型的变量,甚至是一些复杂的类型,例如列表、字典和对象。

可以使用过滤器修改变量,过滤器名添加在变量名之后,中间使用竖线分隔。例如,{{ name|capitalize }} (capitalize first letter)。

过滤器名 说明
safe 渲染值时不转义
capitalize 把值的首字母转换成大写,其他字母转换成小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母都转换成大写
trim 把值的首尾空格去掉
striptags 渲染之前把值中所有的 HTML 标签都删掉

控制标记

Jinja中2的控制标记包括:

  • 条件判断标记(if/elif/else),
  • 循环控制(for-loop)
  • macro(宏)
  • block (模板继承)
# 条件判断
{% if user %}Hello, {{ user }}!
{% else %}Hello, Stranger!
{% endif %}

# 循环
<ul>{% for comment in comments %}
<li>{{ comment }}</li>{% endfor %}
</ul>

# macro (相当于function)
{% macro render_comment(comment) %}<li>{{ comment }}</li>
{% endmacro %}
<ul>{% for comment in comments %}
{{ render_comment(comment) }}{% endfor %}
</ul>

# 重复使用macro
{% import 'macros.html' as macros %}<ul>
{% for comment in comments %}{{ macros.render_comment(comment) }}
{% endfor %}</ul>

模板继承:

<!-- base.html 基础模板 --> 
<html> 
<head> 
    {% if title %} 
        <title>{{ title }} - microblog</title> 
    {% else %} 
        <title>Welcome to microblog</title> 
    {% endif %} 
</head> 

<body> 
    <div>Microblog: <a href="/index">Home</a></div> 
    <hr> 
    <!--black中间的内容会被子模板里的内容替代-->
    {% block content %}{% endblock %}   
</body>
</html>
<!-- index.html 子模板 -->
{% extends "base.html" %}
{% block content %} 
    <h1>Hi, {{ user.nickname }}!</h1> 
    {% for post in posts %} 
        <div><p>{{ post.author.nickname }} says: <b>{{ post.body }}</b></p></div> 
    {% endfor %}
{% endblock %}

参考资料:
The Flask Mega-Tutorial, Part II: Templates
Jinja2 简明使用手册
《Flask Web开发》

相关文章

  • templates(模板)

    jinja2 Flask中使用jinja2模板引擎jinja2是由Flask作者开发,模仿Django的模板引擎 ...

  • Templates 2018-08-28

    1. jinja2 Flask中使用jinja2模板引擎 jinja2是由Flask作者开发,模仿Django的模...

  • Flask模板引擎:Jinja2常用语法整理

    摘要:Flask,Jinja2,HTML Flask模板引擎Jinja2简述 模板实质上是一个静态的包含HTML语...

  • flask-模板

    一、模板的定义 二、模板引擎 flask使用jinja2作为默认模板引擎 2-1:默认配置 template_fo...

  • Flask学习笔记之模板引擎Jinja2(四)

    随着程序内容改变,视图函数也有可能需要变化。模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体...

  • flask.pocoo.org/docs/0.12/templa

    原文链接 模板 Flask 使用 Jinja2 作为默认模板引擎。你完全可以使用其它模板引擎。但是不管你使用 哪种...

  • jinja2

    jinja2是Flask作者开发的一个模板系统,起初是仿django模板的一个模板引擎,为Flask提供模板支持,...

  • flask二、Template模版引擎(Jinja2)

    Flask Template模版引擎(Jinja2) Flask利用Jinja2作为模版引擎。模版引擎包含了变量和...

  • Flask学习笔记-依赖库

    Flask依赖两个外部库: Jinja2模板引擎 Werkzeng WSGI工具集。 使用pip安装flask的时...

  • Flask基础01

    Flask框架 Flask 是一个基于python并且依赖于Jinja2模板引擎和 Werkzeug WSGI 服...

网友评论

      本文标题:Flask学习笔记之模板引擎Jinja2(四)

      本文链接:https://www.haomeiwen.com/subject/idfgdttx.html