Flask web开发之路五
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):计算一个长字符串中单词的个数。
Flask web开发之路五的更多相关文章
- Flask web开发之路九
flask_scripts介绍 项目结构如下: flask_script_demo.py文件: from flask import Flask app = Flask(__name__) @app.r ...
- Flask web开发之路一
之前学过一段时间的flask,感觉还是挺好用的,自己的专利挖掘项目也想这个web框架来搭建,于是重新开始基础学习 环境:win10,python3.6,pycharm2017,虚拟环境virtuale ...
- Flask web开发之路十四
今天开始Flask的实战,创建一个项目,实现包括用户登录.注册.注销.发表博客.评论以及检索等功能 首先给出项目结构: 1.config.py文件: 存放各种配置信息 import os # dial ...
- Flask web开发之路十三
g对象 ### 保存全局变量的g属性:g:global1. g对象是专门用来保存用户的数据的.2. g对象在一次请求中的所有的代码的地方,都是可以使用的. 项目结构: g_demo.py文件代码: f ...
- Flask web开发之路十二
ge请求和post请求 ### get请求和post请求:1. get请求: * 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求. * 传参:get请求传参是放 ...
- Flask web开发之路十一
首先写一下cookie和session的概念,然后是Flask中session的工作机制以及操作session ### cookie: 1. `cookie`出现的原因:在网站中,http请求是无状态 ...
- Flask web开发之路十
首先介绍循环引用的问题: 当一个模块需要引用另一个模块的类,而另一个模块又需要引用这个模块的类时,就出现了循环引用,而没法导入类,这时候可以切断其中一条引用路径,增加一个模块 项目结构: models ...
- Flask web开发之路八
今天写Flask_SQLAlchemy的外键及其关系 ### Flask-SQLAlchemy外键及其关系: 主app文件代码: from flask import Flask from flask_ ...
- Flask web开发之路七
今天写SQLAlchemy数据库 首先介绍ORM的概念: ORM,Object类,Relationship:关系,Mapping:映射,也就是模型关系映射 flask-sqlalchemy是一套ORM ...
随机推荐
- GIS中栅格数据结构的显示与计算
在GIS中,根据数据存储的表现形式不同,通常将空间数据分为矢量数据和栅格数据.最简单的区别是:当栅格数据放大到一定程度时,就会呈现出我们熟悉的讨厌的"马赛克". 栅格数据存储 最简 ...
- android highcharts 柱状图例子
android提供achartengine api 只能做简单的,如果是复杂的图表,个人的想法结合highcharts来完成:减小工作量,官方提供的例子也非常丰富. 通过android webview ...
- linux远程开启不挂起的服务
解决Linux关闭终端(关闭SSH等)后运行的程序自动停止 λ nohup --help Usage: nohup COMMAND [ARG]... or: nohup OPTION Run COMM ...
- sublime text3全局设置
1.快捷键 ctrl+shift+p 2.输入 PackageResourceViewer 3.找到后 Open Resource 打开 , 4.选择 Theme-default,鼠标双击Theme ...
- swift3 与 OC 语法区别
1.Swift还增加了Objective-C中没有的类型比如元组(Tuple). 元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值. 元组(tuples)把多个 ...
- 【Windows】Windows中解析DOS的DIR命令使用
总结一下cmd中的dir命令的用法 64位win10系统上,打印帮助文档. D:\test>dir /? 显示目录中的文件和子目录列表. DIR [drive:][path][filename] ...
- git checkout -b mybranch和git checkout mybranch
创建分支: $ git branch mybranch切换分支: $ git checkout mybranch创建并切换分支: $ git checkout -b mybranch更新maste ...
- 深入浅出理解c++虚函数
深入浅出理解c++虚函数 记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下. 装逼一刻: 最近,本人思想发 ...
- [svc]arp协议的细枝末节
tcpdump抓取arp包 tcpdump -nn -i calif24874aae57 -e arp数据包格式 操作字段指出四种操作类型: arp请求 1 arp应答 2 rarp请求 3 rarp ...
- [svc]linux下网桥-docker网桥
网桥和交换机 2口交换机=网桥 交换机: 工作在数据链路层,根据源mac学习(控制层),目的mac转发(数据层). linux的网卡 vmware workstation中的桥接 参考: http:/ ...