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实现监控windows服务并自动启动服务示例
Apr 17 Python
Python3基础之基本数据类型概述
Aug 13 Python
python元组操作实例解析
Sep 23 Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
python实现数独算法实例
Jun 09 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 Python
Python List列表对象内置方法实例详解
Oct 22 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
python将字典内容写入json文件的实例代码
Aug 12 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
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
javascript arguments使用示例
2014/12/16 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python实现学生信息管理系统
2020/04/05 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
pytorch标签转onehot形式实例
2020/01/02 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
英国电子专家:maplin
2019/09/04 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
为什么要有struct关键字
2012/05/08 面试题
个人考核材料
2014/05/15 职场文书
食品流通安全承诺书
2014/05/22 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
预备党员党支部意见
2015/06/02 职场文书
Java基础——Map集合
2022/04/01 Java/Android
MySQL常用慢查询分析工具详解
2022/08/14 MySQL