Flask模板引擎Jinja2使用实例


Posted in Python onApril 23, 2020

Flask提供的模板引擎为Jinja2,易于使用,功能强大。

模板仅仅是文本文件,它可以生成任何基于文本的格式(HTML、XML、CSV、LaTex 等等)。

它并没有特定的扩展名, .html 或 .xml 都是可以的。

模板包含 变量 或 表达式 ,这两者在模板求值的时候会被替换为值。模板中还有标签,控制模板的逻辑。

Jinja2文档:http://docs.jinkan.org/docs/jinja2/index.html

下面是一些使用实例,涉及模板继续、变量、赋值、循环、去空白、转义块、条件语句等。

1、在目录templates下面创建基本模板文件base.html

<!doctype html>
<html>
  <head>
    <title>{{title}}</title>
    <style text="text/css">
      ul{list-style:none}
      li{padding-left:20px}
    </style>
  </head>
  <body>  
    <div id="content">
     <h4>子模板内容</h4>
      {% block content %}
      
      {% endblock %}
    </div>
  </body>
</html>

2、同样在目录templates下面创建子模板文件test1.html

{% extends 'base.html' %}
{# 这里是注释,上面标签表示当前模板继承自模板base.html #}  

{% block content %}

  变量:{{v1}}
   <br />
   
   赋值:
   {% set v2 = 100 %}
   {{v2}}
   <br />     
   
  循环:
  {% for item in items%}
    {{ item.name }}
  {% endfor %}
   <br />  
     
  去空白:
  {% for item in items -%}
    {{ item.name }}
  {%- endfor %}
   <br />
   
   转义块:
   {% raw %}
    <ul>
     {% for item in list -%}
      <li>{{ item }}</li>
     {%- endfor %}
    </ul>
   {% endraw %}
   
   条件语句:
   {% for item in items%}
    {% if item.name == '张三' %} {{item.name}}(管理员)
    {% else %} {{item.name}}
    {% endif %}     
  {% endfor %}
  <br />
<form method="post" action="/getFormValue">		 

<input type="text" name="username" width="60" />		 

<input type="submit" value="获取表单值" />		 	
</form>
{% endblock %}

3、在与目录templates平级目录上创建test1.py

from flask import Flask, render_template, request

app = Flask(__name__) 

@app.route('/test1')
def test1() -> 'html': 
 items = [{'name':'张三'},
     {'name':'李四'},
     {'name':'王五'}]
 return render_template('test1.html',
             title='test',
             v1='变量值',
             items = items)


@app.route('/getFormValue', methods=['POST'])
def getFormValue() -> 'str':
 username = request.form['username'] 
 return username

app.run(debug = True)

4、在命令提示符下执行py -3 test1.py

访问http://127.0.0.1:5000/test1,页面显示如下:

子模板内容
变量:变量值
赋值: 100
循环: 张三 李四 王五
去空白: 张三李四王五
转义块:
{% for item in list -%}
{{ item }}
{%- endfor %}
条件语句: 张三(管理员) 李四 王五

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python读写ini文件示例(python读写文件)
Mar 25 Python
python创建关联数组(字典)的方法
May 04 Python
Python中文字符串截取问题
Jun 15 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
python实现五子棋小游戏
Mar 25 Python
Pytorch之卷积层的使用详解
Dec 31 Python
Python定时器线程池原理详解
Feb 26 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
Python数据分析入门之数据读取与存储
May 13 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 #Python
在matplotlib中改变figure的布局和大小实例
Apr 23 #Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 #Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 #Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 #Python
Python matplotlib实时画图案例
Apr 23 #Python
windows下的pycharm安装及其设置中文菜单
Apr 23 #Python
You might like
php横向重复区域显示二法
2008/09/25 PHP
php 获取远程网页内容的函数
2009/09/08 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
Yii全局函数用法示例
2017/01/22 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
python 文件操作api(文件操作函数)
2016/08/28 Python
python 构造三维全零数组的方法
2018/11/12 Python
Python理解递归的方法总结
2019/01/28 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
python实现静态服务器
2019/09/05 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
JSF界面控制层技术
2013/06/17 面试题
大学生水文观测实习自我鉴定
2013/09/29 职场文书
产品设计开发计划书
2014/05/07 职场文书