模板变量
在上一篇文章的最后简单介绍了下如何通过模板渲染传递int类型的参数,下文将介绍其他类型的如何传递。
列表
@app.route('/showusers')
def show():
name='tuantuan'
#j=json.dumps(users)
friends=['沈巍','面面','龙龙']
return render_template('show.html',name=name,friends=friends)
<body>
<div>信息展示</div>
<p>
用户名是{{name}}
<br>
{{friends.0}}
{{friends[0]}}
{{friends[:2]}}
</p>
</body>
可以看出,传过去后,在html中支持对应的列表访问操作。
字典
@app.route('/showusers')
def show():
name='tuantuan'
#j=json.dumps(users)
friends=['沈巍','面面','龙龙']
dict1={'apple':'red','gift':'pink','love':'pink'}
return render_template('show.html',name=name,friends=friends,dict1=dict1)
<br>
{{dict1.gift}}
{{dict1.get('apple')}}
两种在html中访问字典的方式
对象
class Girl:
def __init__(self,name,gender='女'):
self.name=name
self.gender='女'
def __str__(self):
return self.name
@app.route('/showusers')
def show():
goodone=Girl('aiyou')
return render_template('show.html',goodone=goodone)
<p>
<br>
{{goodone}}---{{goodone.gender}}
</p>
若直接goodone则默认返回__str__;若指定属性则返回指定的。
__str__方法
当直接输出对象时,如果定义了__str__(self),那么就会打印这个方法中return的值。(即对这个对象的描写)。
其他类型
string,int,list,dict,对象,set,tuple均可以,这里不再一一做举例。
控制块
那么如何能够将展示的信息以表格的形式展现,接下来我们引入控制块。
html中的注释
这是单纯html网页使用的注释。
<!--
-->
这是服务器能够识别的注释。
{# ul……li #}
示例1
@app.route('/showusers')
def show():
wawo=['haha','xixi','heihei','ye','luelue']
return render_template('show.html',wawo=wawo)
<body>
<div>信息展示(控制块方法示例)</div>
<p>
<ul>
{% for wa in wawo %}
<li> {{wa}} </li>
{% endfor %}
</ul>
</p>
</body>
- {% %}中就是服务器能够识别的代码;
- 要注意,在html文件中,只要是传入的变量一定要记得加{{}}。
示例1改进
指定长度大于4的字符串更改样式
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset="UTF-8">
<title>哈哈小伙伴</title>
<style>
.a{
color:red;
font-weight:bold;
}
</style>
</head>
<body>
<div>信息展示(控制块方法示例)</div>
<p>
<ul>
{% for wa in wawo %}
<li> {{wa}} </li>
{% endfor %}
</ul>
<ul>
{% for wa in wawo %}
{% if wa|length>4 %}
<li class="a"> {{wa}} </li>
{% else %}
<li> {{wa}} </li>
{% endif %}
{% endfor %}
</ul>
</p>
</body>
</html>
示例2
表格形式展示
<table border="1" cellpadding="8" cellspacing="8">
{% for user in users %}
<tr>
<td>{{user.name}}</td>
<td>{{user.password}}</td>
</tr>
{% endfor %}
</table>
示例2改进
(以下先简写以下框架)
引入一些格式
LOOP的使用
过滤器
过滤器其实就是对函数的使用
比如len()这种函数在html文件中即使加{{}}但是依旧不支持,所以使用过滤器来达到同样的函数效果
在html文件中:{{girl.append(“gg”)}}会导致返回值None,所以不建议增删改查在模板里去做,而是在后端做完处理后再模板渲染。
过滤器的使用方法:
{{变量名|过滤器}}
常见过滤器:
1.safe:禁用转义
2.capitalize:首字母大写