Jinjia2模板

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

if条件判断

主app文件代码:

  1. from flask import Flask,render_template
  2.  
  3. app = Flask(__name__)
  4.  
  5. @app.route('/<is_login>/')
  6. def index(is_login):
  7. if is_login == '1':
  8. user = {
  9. 'username':'hyq',
  10. 'age':19
  11. }
  12. return render_template('index.html',user=user)
  13. else:
  14. return render_template('index.html')
  15.  
  16. if __name__ == '__main__':
  17. app.run(debug=True)

index.html文件:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. {% if user and user.age > 18 %}
  9. <a href="#">{{ user.username }}</a>
  10. <a href="#">注销</a>
  11. {% else %}
  12. <a href="#">登录</a>
  13. <a href="#">注册</a>
  14. {% endif %}
  15. </body>
  16. </html>

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

前端显示:

条件判断,简单的

for循环遍历

主app代码:

  1. from flask import Flask,render_template
  2.  
  3. app = Flask(__name__)
  4.  
  5. # # for遍历字典
  6. # @app.route('/')
  7. # def index():
  8. # user = {
  9. # 'username':'hyq',
  10. # 'age':18
  11. # }
  12. # websites = ['baidu.com','google.com']
  13. # return render_template('index.html',user=user,websites=websites)
  14.  
  15. @app.route('/')
  16. def index():
  17. books = [
  18. {
  19. 'name':'西游记',
  20. 'author':'吴承恩',
  21. 'price':109
  22. },
  23. {
  24. 'name': '水浒传',
  25. 'author': '施耐庵',
  26. 'price': 87
  27. },
  28. {
  29. 'name': '红楼梦',
  30. 'author': '曹雪芹',
  31. 'price': 125
  32. },
  33. {
  34. 'name': '三国演义',
  35. 'author': '罗贯中',
  36. 'price': 104
  37. }
  38. ]
  39. return render_template('index.html',books = books)
  40.  
  41. if __name__ == '__main__':
  42. app.run(debug=True)

index.html代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. {# {% for k,v in user.items() %}#}
  9. {# <p>{{ k }}:{{ v }}</p>#}
  10. {# {% endfor %}#}
  11. {# {% for website in websites %}#}
  12. {# <p>{{ website }}</p>#}
  13. {# {% endfor %}#}
  14. <table>
  15. <thead>
  16. <th>书名</th>
  17. <th>作者</th>
  18. <th>价格</th>
  19. </thead>
  20. <tbody>
  21. {% for book in books %}
  22. <tr>
  23. <td>{{ book.name }}</td>
  24. <td>{{ book.author }}</td>
  25. <td>{{ book.price }}</td>
  26. </tr>
  27. {% endfor %}
  28. </tbody>
  29. </table>
  30. </body>
  31. </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文件代码:

  1. from flask import Flask,render_template
  2.  
  3. app = Flask(__name__)
  4.  
  5. @app.route('/')
  6. def index():
  7. comments = [
  8. {
  9. 'user':'hyq',
  10. 'content':'xxxx'
  11. },
  12. {
  13. 'user': 'young',
  14. 'content': 'xxxx'
  15. }
  16. ]
  17.  
  18. return render_template('index.html',comments= comments)
  19. #avatar='http://img.bss.csdn.net/201707242137463745.jpg')
  20.  
  21. if __name__ == '__main__':
  22. app.run(debug=True)

index.html文件代码;

  1. from flask import Flask,render_template
  2.  
  3. app = Flask(__name__)
  4.  
  5. @app.route('/')
  6. def index():
  7. comments = [
  8. {
  9. 'user':'hyq',
  10. 'content':'xxxx'
  11. },
  12. {
  13. 'user': 'young',
  14. 'content': 'xxxx'
  15. }
  16. ]
  17.  
  18. return render_template('index.html',comments= comments)
  19. #avatar='http://img.bss.csdn.net/201707242137463745.jpg')
  20.  
  21. if __name__ == '__main__':
  22. 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):计算一个长字符串中单词的个数。

Flask web开发之路五的更多相关文章

  1. Flask web开发之路九

    flask_scripts介绍 项目结构如下: flask_script_demo.py文件: from flask import Flask app = Flask(__name__) @app.r ...

  2. Flask web开发之路一

    之前学过一段时间的flask,感觉还是挺好用的,自己的专利挖掘项目也想这个web框架来搭建,于是重新开始基础学习 环境:win10,python3.6,pycharm2017,虚拟环境virtuale ...

  3. Flask web开发之路十四

    今天开始Flask的实战,创建一个项目,实现包括用户登录.注册.注销.发表博客.评论以及检索等功能 首先给出项目结构: 1.config.py文件: 存放各种配置信息 import os # dial ...

  4. Flask web开发之路十三

    g对象 ### 保存全局变量的g属性:g:global1. g对象是专门用来保存用户的数据的.2. g对象在一次请求中的所有的代码的地方,都是可以使用的. 项目结构: g_demo.py文件代码: f ...

  5. Flask web开发之路十二

    ge请求和post请求 ### get请求和post请求:1. get请求: * 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求. * 传参:get请求传参是放 ...

  6. Flask web开发之路十一

    首先写一下cookie和session的概念,然后是Flask中session的工作机制以及操作session ### cookie: 1. `cookie`出现的原因:在网站中,http请求是无状态 ...

  7. Flask web开发之路十

    首先介绍循环引用的问题: 当一个模块需要引用另一个模块的类,而另一个模块又需要引用这个模块的类时,就出现了循环引用,而没法导入类,这时候可以切断其中一条引用路径,增加一个模块 项目结构: models ...

  8. Flask web开发之路八

    今天写Flask_SQLAlchemy的外键及其关系 ### Flask-SQLAlchemy外键及其关系: 主app文件代码: from flask import Flask from flask_ ...

  9. Flask web开发之路七

    今天写SQLAlchemy数据库 首先介绍ORM的概念: ORM,Object类,Relationship:关系,Mapping:映射,也就是模型关系映射 flask-sqlalchemy是一套ORM ...

随机推荐

  1. GIS中栅格数据结构的显示与计算

    在GIS中,根据数据存储的表现形式不同,通常将空间数据分为矢量数据和栅格数据.最简单的区别是:当栅格数据放大到一定程度时,就会呈现出我们熟悉的讨厌的"马赛克". 栅格数据存储 最简 ...

  2. android highcharts 柱状图例子

    android提供achartengine api 只能做简单的,如果是复杂的图表,个人的想法结合highcharts来完成:减小工作量,官方提供的例子也非常丰富. 通过android webview ...

  3. linux远程开启不挂起的服务

    解决Linux关闭终端(关闭SSH等)后运行的程序自动停止 λ nohup --help Usage: nohup COMMAND [ARG]... or: nohup OPTION Run COMM ...

  4. sublime text3全局设置

    1.快捷键 ctrl+shift+p 2.输入 PackageResourceViewer 3.找到后 Open Resource 打开  , 4.选择 Theme-default,鼠标双击Theme ...

  5. swift3 与 OC 语法区别

    1.Swift还增加了Objective-C中没有的类型比如元组(Tuple). 元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值. 元组(tuples)把多个 ...

  6. 【Windows】Windows中解析DOS的DIR命令使用

    总结一下cmd中的dir命令的用法 64位win10系统上,打印帮助文档. D:\test>dir /? 显示目录中的文件和子目录列表. DIR [drive:][path][filename] ...

  7. git checkout -b mybranch和git checkout mybranch

      创建分支: $ git branch mybranch切换分支: $ git checkout mybranch创建并切换分支: $ git checkout -b mybranch更新maste ...

  8. 深入浅出理解c++虚函数

    深入浅出理解c++虚函数   记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下. 装逼一刻: 最近,本人思想发 ...

  9. [svc]arp协议的细枝末节

    tcpdump抓取arp包 tcpdump -nn -i calif24874aae57 -e arp数据包格式 操作字段指出四种操作类型: arp请求 1 arp应答 2 rarp请求 3 rarp ...

  10. [svc]linux下网桥-docker网桥

    网桥和交换机 2口交换机=网桥 交换机: 工作在数据链路层,根据源mac学习(控制层),目的mac转发(数据层). linux的网卡 vmware workstation中的桥接 参考: http:/ ...