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中的wxPython实现最基本的浏览器功能
Apr 14 Python
使用Python内置的模块与函数进行不同进制的数的转换
Mar 12 Python
python读取oracle函数返回值
Jul 18 Python
python实现图片处理和特征提取详解
Nov 13 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
用 Python 制作地球仪的方法
Apr 24 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
Python爬虫简单运用爬取代理IP的实现
Dec 01 Python
Python max函数中key的用法及原理解析
Jun 26 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中如何调用webservice的实例参考
2013/04/25 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
VBScript版代码高亮
2006/06/26 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python进行数据提取的方法总结
2016/08/22 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
python实现密码强度校验
2020/03/18 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
数控专业推荐信范文
2013/12/02 职场文书
促销活动计划书
2014/05/02 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
班主任开场白
2015/06/01 职场文书
2015入党自传格式范文
2015/06/26 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android