转换器
int 接受整数
float 同int,但是接受浮点数
path 和默认的相似,但也接受斜线
转换器的本质是正则
自定义转换器
系统有哪些转换器
from werkzeug.routing import BaseConverter,IntegerConverter,FloatConverter,PathConverter
为什么要自定义转化器
步骤是什么
1、继承BaseConverter实现
2、通过url_map的converters注册转换器
app.url_map.converters['re'] = Myconverter
转换器高级用法的两个方法
to_pyhton 只要使了转换器, 一定被调用
to_url 只有在重定向了,并且路由上有参数的时候才会被调用
模板
变量,标签,注释,过滤器
过滤器本质就是函数
视图引用函数
from flask import render_template
变量使用jinjia2这个模块引擎来渲染模板
我们在后台模拟一些数据,返回给模板渲染,render_template函数第二个参数就是我们要返回的内容。
在模板中用模板语言解析出我们的数据,解析变量我们{{}},这种语法我们叫变量代码块:
注释
使用 {# #} 进行注释,注释的内容不会在html中被渲染出来。
{# {{ name }} #}
过滤器
过滤器本质就是函数
自定义过滤器 至少有一个参数 千万别忘记用app.jinjia_env.filters注册过滤器
app.jinja_env.filters['my'] = do_myfilter
长度过滤器:
{{ name|length }}<br data-tomark-pass>
默认过滤器,当后台没有返回sex的时候会执行:
{{ sex|default('男') }}<br data-tomark-pass>
反转过滤器:
{{ name|reverse }}<br data-tomark-pass>
过滤器支持链式调用:
{{ "hello world" | reverse | upper }}
语句块操作:
{% filter upper %}
'abc'
{% endfilter %}
常用过滤器:
禁用转义:{{ '<em>hello</em>' | safe }}
删除标签:{{ '<em>hello</em>' | striptags }}
首字母大写:{{ 'hello' | capitalize }}
所有值小写:{{ 'HELLO' | lower }}
首字母大写:{{ 'hello world' | title }}
字符串反转:{{ 'hello' | reverse }}
字符串截断:{{ 'hello world' | truncate(5) }}
获取列表长度:{{ [1,2,3,4,5,6] | length }}
列表求和:{{ [1,2,3,4,5,6] | sum }}
列表排序:{{ [6,2,3,1,5,4] | sort }}
abs(value):返回一个数值的绝对值。示例:-1|abs
default(value,default_value,boolean=false):如果当前变量没有值,则会使用参数中的值来代替。示例:name|default(‘xiaotuo’)——如果name不存在,则会使用xiaotuo来替代。boolean=False默认是在只有这个变量为undefined的时候才会使用default中的值,如果想使用python的形式判断是否为false,则可以传递boolean=true。也可以使用or来替换。
escape(value)或e:转义字符,会将<、>等符号转义成HTML中的符号。显例:content|escape或content|e。
first(value):返回一个序列的第一个元素。示例:names|first
format(value,arags,*kwargs):格式化字符串。比如:{{ "%s" - "%s"|format('Hello?',"Foo!") }}将输出:Helloo? - Foo!
last(value):返回一个序列的最后一个元素。示例:names|last。
length(value):返回一个序列或者字典的长度。示例:names|length。
join(value,d=u”):将一个序列用d这个参数的值拼接成字符串。
safe(value):如果开启了全局转义,那么safe过滤器会将变量关掉转义。示例:content_html|safe。
int(value):将值转换为int类型。
float(value):将值转换为float类型。
lower(value):将字符串转换为小写。
upper(value):将字符串转换为小写。
replace(value,old,new): 替换将old替换为new的字符串。
truncate(value,length=255,killwords=False):截取length长度的字符串。
striptags(value):删除字符串中所有的HTML标签,如果出现多个空格,将替换成一个空格。
trim:截取字符串前面和后面的空白字符。
string(value):将变量转换成字符串。
wordcount(s):计算一个长字符串中单词的个数。
自定义过滤器:
# 自定义过滤器
def handletime(time):
return time.strftime('%Y-%m-%d %H:%M')
注册过滤器
app.jinja_env.filters['handletime'] = handletime # 注册过滤器
自定义 模板中使用过滤器
自定义过滤器
{{ time|handletime }}