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类属性与实例属性用法分析
May 09 Python
python获取元素在数组中索引号的方法
Jul 15 Python
python的常用模块之collections模块详解
Dec 06 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
基于Python实现扑克牌面试题
Dec 11 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
python3 sleep 延时秒 毫秒实例
May 04 Python
通过cmd进入python的步骤
Jun 16 Python
Django Auth用户认证组件实现代码
Oct 13 Python
Python os库常用操作代码汇总
Nov 03 Python
PyTorch dropout设置训练和测试模式的实现
May 27 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
综合图片计数器
2006/10/09 PHP
简单的移动设备检测PHP脚本代码
2011/02/19 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
python妙用之编码的转换详解
2017/04/21 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
Django 开发环境配置过程详解
2019/07/18 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
财务会计应届生求职信
2013/11/24 职场文书
公司晚会主持词
2014/03/22 职场文书
产品发布会策划方案
2014/05/12 职场文书
2014年教师节寄语
2014/08/11 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
技术负责人岗位职责
2015/02/10 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书