寒风萧萧 飞雪飘零 长路漫漫 踏歌而行
回首 望星辰 往事 如烟云
犹记别离时 徒留雪中情
雪中情 雪中情 雪中梦未醒
痴情换得一生泪影
雪中行 雪中行 雪中我独行
挥尽多少英雄豪情
唯有与你同行 与你同行才能把梦追寻
寒风萧萧 飞雪飘零 长路漫漫 踏歌而行
回首 望星辰 往事 如烟云
犹记别离时 徒留雪中情
雪中情 雪中情 雪中梦未醒
痴情换得一生泪影
雪中行 雪中行 雪中我独行
挥尽多少英雄豪情
唯有与你同行 与你同行才能把梦追寻
雪中情 雪中情 雪中梦未醒
痴情换得一生泪影
雪中行 雪中行 雪中我独行
挥尽多少英雄豪情
唯有与你同行 与你同行才能把梦追寻
--------------------
先来教大家一个pycharm设置默认模板的方法。我们每次新建模板或者平时写代码打开以后可能都要重复写# coding: utf-8
这些代码,其实我们可以设置好模板,让它自动生成的:
- 打开pycharm的
setting
(windows)或者preference
(Mac) - 进入:
就可以看到:
右侧就是默认生成的模板了,在这里改成默认生成的代码,以后就不用每次都写那些固定的代码了。
现在我把代码改为:
这样每次我新建flask项目的时候默认就会生成这个模板了。
今天和接下来几天我们继续介绍模板,然后会有一个小项目,不会HTML也没关系,跟着船长一起写就可以了,等学完了flask你发现你会html
了,也懂数据库的增删改查
了,船长本来想专门讲前端的,后来觉得还是一起说算了,毕竟要不然时间就拖太长了。
过滤器:abs——绝对值
文件结构:
flaskDemo.py
# coding: utf-8
from flask import Flask, render_template
import flask
app = Flask(__name__) # type: Flask
app.debug = True
@app.route('/')
def login():
context = {
"name": "Warren",
"age": -18
}
return render_template('index.html', **context)
if __name__ == '__main__':
app.run()
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>过滤器</title>
</head>
<body>
<p>{{ age | abs }}</p>
</body>
</html>
在flaskDemo.py
文件中age
值是-18
,如果我们在index.html
文件中直接用{{ age }}
那么页面返回的值就是-18,现在我们上面的代码给加了一个过滤器,就是age | abs
后面的| abs
就是一个过滤器
了。在Python里,abs
代表取绝对值
。现在再执行代码,发现页面返回的就是18了。
在| abs
中,|
叫做管道
,所以过滤器
就是在变量上,通过管道符号 | 加过滤器名称
来使用的。
过滤器:default——默认值
我们再讲一个过滤器——default
,代码:
flaskDemo.py
# coding: utf-8
from flask import Flask, render_template
import flask
app = Flask(__name__) # type: Flask
app.debug = True
@app.route('/')
def login():
context = {
"user": {
"name": "Warren",
"age": -18}
}
return render_template('index.html', **context)
if __name__ == '__main__':
app.run()
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>过滤器</title>
</head>
<body>
<p>绝对值:{{ user.age | abs }}</p>
<p>默认值:{{ user.gender | default }}</p>
</body>
</html>
上面user.gender
在.py
文件里context
里是没有这个key的,我们现在执行代码:
看到默认值是空,现在把代码改为{{ user.gender | default('male') }}
也就是我们给gender
这个key传一个默认值:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>过滤器</title>
</head>
<body>
<p>绝对值:{{ user.age | abs }}</p>
<p>默认值:{{ user.gender | default('male') }}</p>
</body>
</html>
执行代码,看到:
此外,default
还可以传一个布尔类型的值,默认是False,就是说如果前面的值有值,那么就返回原值,如果没值(None,False)——False的情况,就用过滤器里面的值:
# coding: utf-8
from flask import Flask, render_template
import flask
app = Flask(__name__) # type: Flask
app.debug = True
@app.route('/')
def login():
context = {
"user": {
"name": "Warren",
"age": -18,
"gender": None}
}
return render_template('index.html', **context)
if __name__ == '__main__':
app.run()
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>过滤器</title>
</head>
<body>
<p>绝对值:{{ user.age | abs }}</p>
<p>默认值:{{ user.gender | default('male', True) }}</p>
</body>
</html>
上面代码我们给default
传了两个值,第二个是True
,这时候执行代码,看到的默认值就是male
:
如果default
传False
,{{ user.gender | default('male', False) }}
那么页面返回的就是None
。
除了上面的写法以外,还以用or
代替,这种情况就是不使用过滤器:
.py
文件不变
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>过滤器</title>
</head>
<body>
<p>绝对值:{{ user.age | abs }}</p>
<p>默认值:{{ user.gender or 'male'}}</p>
</body>
</html>
执行代码:
过滤器:转义
直接看代码比较方便:
flaskDemo.py
# coding: utf-8
from flask import Flask, render_template
import flask
app = Flask(__name__) # type: Flask
app.debug = True
@app.route('/')
def login():
context = {
"user": {
"name": "Warren",
"age": -18,
"gender": None,
"comment": u'<script>alert("弹出框")</script>'}
}
return render_template('index.html', **context)
if __name__ == '__main__':
app.run()
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>过滤器</title>
</head>
<body>
<p>绝对值:{{ user.age | abs }}</p>
<p>默认值:{{ user.gender or 'male'}}</p>
<p>转义:{{ user.comment }}</p>
</body>
</html>
执行代码,看到页面返回的就是我们.py
文件里写的,内容:
现在修改<p>转义:{{ user.comment }}</p>
为<p>转义:{{ user.comment | safe }}</p>
,再执行代码:
看到页面弹出了alert
框,也就是说写的js
代码生效了,在js中,弹出框就是<script>alert('提示信息')</script>
(大家平时做测试时候也可以在输入框里输入一下这个,看一下开发们对这个有没有处理)。这就是safe
过滤器的作用。
明天我们继续讲几个过滤器。今天这个大家趁着休息去试试吧~