今天又是一个精彩又无聊的一天,不过随着知识的缓慢的增加我的内心也充满了干劲,虽然前进的有些缓慢 但我不会这么容易放弃的,一定要相信自己,不要灰心

好了 ~ 不说废话了 , 我自己听的都有些受不了了 。

  我呢  , 今天学习了模板,在这里我给大家说说几句 关于模板的

  首先说一下模板的作用:模板可以承担视图函数又可以返回响应的内容

  视图函数只负责业务逻辑和数据处理(业务逻辑方面),而模板则取到视图函数的数据结果进行展示(视图展示方面)

代码结构清晰,耦合度底。

  模板引擎有很多,不过在这里我给大家说的是Jinjia2 ,它是在Python下一个被广泛应用的模板引擎,是有Python实现的模板语言,他的设计思想来源于Django的模板引擎,并扩展了其语法金和一系列强大的功能,其实Flask内置的模板语言。

  模板语言:是一种被设计来自动生成文档的简单文本格式,在模板语言中,一般都会把一些变量传给模板,途欢模板的特定文职上预先定义好的占位变量名。

  渲染模板函数:Flask提供的render_template函数封装了该模板引擎,render_template 函数的第一个参数是模板的文件名,后面的参数都是键值对,表示模板中变量对应的真实值。

  {{}} 来表示变量名,这种语法叫做变量代码块,在变量代码块中可以是任意Python类型或者对象,只要能够被转换成str()类型就可以,{%%} 用这个来定义的控制块代码,可以实现一些语言层次的功能,比如循环语句或者if语句,{##} 使用这个符号进行注释,注释的内容不会再html中被渲染出来。

  接下来我给大家展示一个实例:

  第一步 当然先导入模块啦

  from flask import,render_template

  建立对象

  app = Flask(__name__)

  导入配置文件  #我喜欢这个方法,当然也可以用其他的方法

  app.config.from_pyfile('config.ini')

 路由

  @app.route('/')

  def index():

    context = {}

    context['my_str'] = ‘你好世界’

    context['my_int'] = 100

    context['my_list'] = [4,3,2,4,2,3]

    context['my_dict'] = {'name':'xiaoming','age':19}

    使用render_template模块来渲染模板文件,通过第二个参数传递数据变量,通过**引用来将嵌套dict直接传递给模板

    return render_template('day3.html',**context)

 if __name__ == "__main__":

    app.run()

这是一个模板文件,还得写一个day3.html的文件的网页模板

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>flask网页模板的学习</title>
</head>
<body>
 
 
<div>
这是我们的网页模板
<br /><br />
{# 这里是注释,最基本的模板语法,输出一个变量 #}
{{ my_str }}
<br /><br />
{# 模板语法可以做简单的运算操作#}
{{my_int+44}}
<br /><br />
{# 模板语法可以以下标引用的方式输出list元素#}
{{my_list [0] }} {{my_list.1 }}
<br /><br />
{{my_dict['name']}} {{my_dict.age}}
<br /><br />
{# 使用{%%}来定义简单的逻辑控制代码#}
{% if my_int %}
整形存在
{% else%}
不存在
{# 使用if判断,一定要有endif 用来结束逻辑判断#}
{% endif%}
<ul>
{# 使用for循环来遍历list , for 也必须endfor 用来结束循环 #}
{% for item in my_list %}
<li>{{item}}</li>
{% endfor %}
</ul>
{# 使用 if for 嵌套来实现单双行背景色 #}
<table style="border:1px solid black; padding:5px;">
{% for item in my_list %}
{# 使用loop关键字可以调用循环的索引,用来判断下标单双数 #}
{% if loop.index % 2 == 0 %}
<tr style="<td>{{ item }}</td></tr>
{% else %}
<tr style="<td>{{ item }}</td></tr>
{% endif %}
{% endfor %}
</table>
</div>
</body>
</html>

接下来说一下过滤器:

过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化,运算等等,而在模板中是不能直接调用Python中的某些方法,那么过滤器的作用就找到了。

使用方法:变量名|过滤器  {{variable | filter_name(*args)}},如果没有任何参数传给过滤器,则可以把括号省略掉 ,

链式调用:{{“helloworld”|reverse|upper}}

常见内建过滤器,字符串操作,   safe:禁用转义  <p>{{'<em>hello</em>'|safe}}</p>

capitalize:把变量值得首字母转成大写,其余字母小写 <p>{{'hello'|capitalize}}

lower:把值转成小写    <p>{{'HELLO'|lower}}</p>

upper:把值转换成大写 ,title:把值中的每个单词的首字母都转换成大写 , reverse:字符串反转,formate:格式化输出 <p>{{'%s is %d |formate{'name',17}'}}</p>

striptags:渲染之前把值中所有的HTML标签都删掉   <p>{{'<em>hello</em>'|striptags}}</p>

truncate:字符串截断  <p>{{'hello every one'|truncate(9)}}</p>

接下来是列表操作:

first:取第一个元素  <p> {{[1,2,3,4] | first}}</p>

last  :取最后一个元素,

length : 获取列表长度

sum:列表求和

sort:列表排序

语句块操作:
{%filter upper%}

#一段文字#

{%endfilter%}

控制块代码:

if语句

{% if %} {% elif %}

{% endif %}

循环语句:

{% for %}

{% endfor %}

就写这些了 ,   我要开始复习了    接下来的 什么时候有空在写  。

flask框架--模板的更多相关文章

  1. Python——Flask框架——模板

    一.渲染模板 render_template 函数把Jinja2模板引擎集成到程序中 二.Jinja2变量过滤器 过滤器名 说明 safe 渲染值是不转义 capitalize 把值得首字母转换成大写 ...

  2. flask框架模板系统

    flask模板引擎 flask默认使用了Jinja2模板引擎,我们在使用模板的时候,需要在同级目录文件夹下 创建一个templates的文件夹,然后这个文件夹内放置我们想要的模板实例即可: 在正常普通 ...

  3. flask框架学习

    第一:flask框架基础入门 第二:flask框架框架概述 第三:flask框架请求数据 第四:flask框架路由系统 第五:flask框架静态文件 第六:flask框架模板引擎 第七:flask其他 ...

  4. flask框架下的jinja2模板引擎(2)(过滤器与自定义过滤器)

    flask框架下的jinja2模块引擎(1):https://www.cnblogs.com/chichung/p/9774556.html 这篇论文主要用来记录下 jinja2 的过滤器. 什么是过 ...

  5. flask框架下的jinja2模板引擎(1)(模板渲染)

    #转载请留言联系 模板是什么? 在 flask 框架中,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本.模板作用即是承担视图函 ...

  6. flask框架下的jinja2模板引擎(3)(模板继承与可以在模板使用的变量、方法)

    flask 框架下的jinja2模块引擎(1):https://www.cnblogs.com/chichung/p/9774556.html flask 框架下的jinja2模块引擎(2):http ...

  7. Flask框架(二)—— 反向解析、配置信息、路由系统、模板、请求响应、闪现、session

    Flask框架(二)—— 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 目录 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 一.反向解析 1.什么是反向解析 ...

  8. Flask框架 请求与响应 & 模板语法

    目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...

  9. Flask框架(2)-JinJa2模板

    为了把业务逻辑和表现逻辑分开,Flask把表现逻辑移到JinJa2模板,模板是一个包含响应文本的文件.它用占位变量表示动态部分,其具体要从请求上下文才知道. 把真实值替换掉占位变量成为渲染,JinJa ...

随机推荐

  1. 690. Employee Importance

    好几种写法,这里贴几个出来 第一种:暴力解法,除去递归栈,空间复杂度O(1).时间复杂度略高 /* // Employee info class Employee { public: // It's ...

  2. SimpleDateFormat转换时间,12,24时间格式[转]

    SimpleDateFormat转换时间,12,24时间格式 来自:http://blog.csdn.net/dongguang1082/article/details/4387165 在使用Simp ...

  3. window.frames

    // 点击事件 function zTreeOnClick(event, treeId, treeNode) { id = treeNode.id; window.frames["treeF ...

  4. TCP/IP协议(4):网络层

    网络层上有IP.ICMP.IGMP等协议. 1.IP地址 在OSI模型中,三层网络层负责IP地址,IP数据报帧头中的源地址和目的地址就是指IP地址.IPV4类型IP地址为32位4个字节,IPV6类型I ...

  5. 使用bat批处理文件定时自动备份oracle数据库并上传ftp服务器

    一.使用bat批处理文件备份oracle(前提是配置好oracle数据库客户端) @echo off set databasename=orcl  //数据库名 set username=ninic ...

  6. python科学计算模块NumPy

    NumPy是Numerical Python的简称,是高性能科学计算和数据分析的基础包.其实NumPy 本身并并没有提供太多的高级的数据分析功能, 但是理解NumPy数组以及面向数组的计算将有利于你更 ...

  7. 16-margin的用法

    margin塌陷问题 当时说到了盒模型,盒模型包含着margin,为什么要在这里说margin呢?因为元素和元素在垂直方向上margin里面有坑. 我们来看一个例子: html结构: <div ...

  8. MongoDB、redis、memcached

    mongodb和memcached不是一个范畴内的东西. mongodb     是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据. memcached,redis mongodb ...

  9. How to transfer developer profile to one mac to another mac

    Export developer profile from old mac. In the Xcode Organizer, select your team in the Teams section ...

  10. 如何更改linux文件的拥有者及用户组(chown和chgrp)

    http://blog.csdn.net/hudashi/article/details/7797393 一.基本知识   在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户.该文件用 ...