Jinjia2模板

紧接着上篇博客,接下去写if条件判断和for循环遍历以及过滤器

if条件判断

主app文件代码:

from flask import Flask,render_template

app = Flask(__name__)

@app.route('/<is_login>/')
def index(is_login):
if is_login == '1':
user = {
'username':'hyq',
'age':19
}
return render_template('index.html',user=user)
else:
return render_template('index.html') if __name__ == '__main__':
app.run(debug=True)

index.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if user and user.age > 18 %}
<a href="#">{{ user.username }}</a>
<a href="#">注销</a>
{% else %}
<a href="#">登录</a>
<a href="#">注册</a>
{% endif %}
</body>
</html>

### if判断:
1. 语法:
```
{% if xxx %}
{% else %}
{% endif %}
```
2. if的使用,可以和python中相差无几。

前端显示:

条件判断,简单的

for循环遍历

主app代码:

from flask import Flask,render_template

app = Flask(__name__)

# # for遍历字典
# @app.route('/')
# def index():
# user = {
# 'username':'hyq',
# 'age':18
# }
# websites = ['baidu.com','google.com']
# return render_template('index.html',user=user,websites=websites) @app.route('/')
def index():
books = [
{
'name':'西游记',
'author':'吴承恩',
'price':109
},
{
'name': '水浒传',
'author': '施耐庵',
'price': 87
},
{
'name': '红楼梦',
'author': '曹雪芹',
'price': 125
},
{
'name': '三国演义',
'author': '罗贯中',
'price': 104
}
]
return render_template('index.html',books = books) if __name__ == '__main__':
app.run(debug=True)

index.html代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{# {% for k,v in user.items() %}#}
{# <p>{{ k }}:{{ v }}</p>#}
{# {% endfor %}#}
{# {% for website in websites %}#}
{# <p>{{ website }}</p>#}
{# {% endfor %}#}
<table>
<thead>
<th>书名</th>
<th>作者</th>
<th>价格</th>
</thead>
<tbody>
{% for book in books %}
<tr>
<td>{{ book.name }}</td>
<td>{{ book.author }}</td>
<td>{{ book.price }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>

上面注释部分是字典和列表的遍历形式

### for循环遍历列表和字典:
1. 字典的遍历,语法和`python`一样,可以使用`items()`、`keys()`、`values()`、`iteritems()`、`iterkeys()`、`itervalues()`
```
{% for k,v in user.items() %}
<p>{{ k }}:{{ v }}</p>
{% endfor %}
```
2. 列表的遍历:语法和`python`一样。
```
{% for website in websites %}
<p>{{ website }}</p>
{% endfor %}
```

过滤器

主app文件代码:

from flask import Flask,render_template

app = Flask(__name__)

@app.route('/')
def index():
comments = [
{
'user':'hyq',
'content':'xxxx'
},
{
'user': 'young',
'content': 'xxxx'
}
] return render_template('index.html',comments= comments)
#avatar='http://img.bss.csdn.net/201707242137463745.jpg') if __name__ == '__main__':
app.run(debug=True)

index.html文件代码;

from flask import Flask,render_template

app = Flask(__name__)

@app.route('/')
def index():
comments = [
{
'user':'hyq',
'content':'xxxx'
},
{
'user': 'young',
'content': 'xxxx'
}
] return render_template('index.html',comments= comments)
#avatar='http://img.bss.csdn.net/201707242137463745.jpg') if __name__ == '__main__':
app.run(debug=True)

### 过滤器:
1. 介绍和语法:
* 介绍:过滤器可以处理变量,把原始的变量经过处理后再展示出来。作用的对象是变量。
* 语法:
```
{{ avatar|default('xxx') }}
```
2. default过滤器:如果当前变量不存在,这时候可以指定默认值。
3. length过滤器:求列表或者字符串或者字典或者元组的长度。
4. 常用的过滤器:
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):计算一个长字符串中单词的个数。

最新文章

  1. PHP 原创视频教程-网站开发新手视频教程
  2. 全面解读python web 程序的9种部署方式
  3. Aix下如何运行Java程序
  4. QComboBox 和 QSpinBox 使用方法
  5. spring中的ResourceBundleMessageSource
  6. 解决MYSQL弃用模块错误Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future
  7. 基于邮件系统的远程实时监控系统的实现 Python版
  8. kvm 随笔
  9. 【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线
  10. ORACLE 博客文章目录(2015
  11. HDU 1560 DNA sequence (迭代加深搜索)
  12. 洛谷P3195 玩具装箱TOY
  13. 目标检测-yolo2
  14. openstack时间不同步问题
  15. Linux 内存机制【转载】
  16. Azkaban介绍+安装部署+实战案例
  17. piwik获取访客头像,自定义显示访问者头像(URL)和描述(标题和替代)
  18. SSM 后台封装的有值, 到前台打印的时候没有值
  19. 网页中引用优酷视频去广告自动播放代码[xyytit]
  20. 示例:Socket应用之简易聊天室

热门文章

  1. 【Yaml】Yaml学习笔记
  2. WPF 实现阴影效果
  3. textAngular字体依赖
  4. VirtualBox中出现UUID have already exists 解决方法
  5. Nginx 设置域名转向配置
  6. 设置tomcat 编译文件位置【转】
  7. Android Studio updating indices 一直刷新和闪烁
  8. Sql2008中添加程序集(转)
  9. 推荐几个Windows工具软件: HDDB - Everything的替代品
  10. c#.net基础