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判断、获取一张图片主色调的2个实例
Apr 10 Python
在windows下快速搭建web.py开发框架方法
Apr 22 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
基于scrapy的redis安装和配置方法
Jun 13 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
Python变量访问权限控制详解
Jun 29 Python
Python定时任务随机时间执行的实现方法
Aug 14 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 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
咖啡的种类和口感
2021/03/03 新手入门
php+dbfile开发小型留言本
2006/10/09 PHP
文件上传的实现
2006/10/09 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
3种php生成唯一id的方法
2015/11/23 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
经验几则 推荐
2006/09/05 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
使用vue-router设置每个页面的title方法
2018/02/11 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python的标准模块包json详解
2017/03/13 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
行政专员岗位职责说明书
2014/09/01 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
创业计划书之花店
2019/09/20 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
Elasticsearch 配置详解
2022/04/19 Java/Android
Java Spring读取和存储详细操作
2022/08/05 Java/Android