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 相关文章推荐
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
Python画图学习入门教程
Jul 01 Python
Python3 Random模块代码详解
Dec 04 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
用python实现刷点击率的示例代码
Feb 21 Python
python实现简单加密解密机制
Mar 19 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
python腾讯语音合成实现过程解析
Aug 01 Python
python 进程的几种创建方式详解
Aug 29 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
PHP发送短信代码分享
2015/08/11 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
python 删除非空文件夹的实例
2018/04/26 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
2019/03/27 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
python动态规划算法实例详解
2020/11/22 Python
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
企划专员岗位职责
2013/12/09 职场文书
竞选村长演讲稿
2014/04/28 职场文书
中班幼儿评语大全
2014/04/30 职场文书
会计学专业自荐信
2014/06/25 职场文书
在Python中如何使用yield
2021/06/07 Python
Python使用openpyxl批量处理数据
2021/06/23 Python
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle