Flask 下载

  • 使用 pip 下载
1
pip install flask
  • Arch Linux 下载
1
sudo pacman -S python-flask
  • Debian 下载
1
sudo apt-get install python-flask

创建一个 Flask 实例

1
2
3
4
5
6
7
8
9
10
from flask import Flask
app = Flask(__name__)

@app.route('/')
def flask_test():
return "hello world"

if __name__ == '__main__':
app.debug = True // 开启flask调试,这样修改完代码后就不必再重启程序
app.run()

代码解析

route 中的字符串表示拼接到 http://localhost:5000 后面的参数

例如 参数为 ‘/‘ 那么就会访问 http://localhost:5000/

我们也可以这样定义

1
2
3
4
5
import flask

@app.route('/dt/<name>')
def flask_dt(name):
return name+", hello"

<> 里面的参数可以带入到页面中

  • main 入口

当 python 文件被直接执行时,if __name__ == '__main__' 之下的代码块将被运行;当 python 文件以模块形式被导入时,其下面的代码块不被运行

HTTP 方法

  • 首先引入 request
1
from flask import Flask,request
  • GET 方式接受传参
1
request.args.get('传参变量名')

实例:

1
2
3
4
5
6
7
8
9
@app.route('/method',methods=['GET','POST']) 
# methods 表示可以接受的传参方式
def method():
if request.method == 'GET':
name = requset.args.get('name')
return "GET !!!" + name
elif request.method == 'POST':
name = request.form['name']
return "POST !!!" + name

Redirect 重定向

  • 引入 redirect 和 url_for
1
from flask import Flask,request,redirect,url_for

实例:

1
2
3
4
5
6
7
8
9
@app.route('/login',method=['GET'])
def login():
key = "123456"
UserKey = request.args.get('key')
if UserKey == key:
return redirect(url_for('login_ed'))

@app.route('/login_ed',method=['GET'])
#定义一个新的页面

模板渲染

文件内部渲染

实例 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from flask import Flask, render_template_string
app = Flask(__name__)

@app.route('/')
def index():
name = "Lixiney"
template='''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<p>Hello {{ name }}</p>
</body>
</html>
'''
return render_template_string(template,name=name)

if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=80)

外部文件

  • 在外部新建一个 templates 文件夹,新建 index.html 文件
1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html lang="en">
<head>
<title>test</title>
</head>
<body>
{{ name }}
</body>
</html>
  • 引入 render_template
1
2
3
4
5
6
7
8
9
10
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
return render_template('index.html', name="Lixiney")
#此处的name 对应 index.html 中的 {{ name }}

if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=80)

使用条件/循环语句

if 条件语句

test.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
{%if name=='Lixiney' %}
<h1>Hello {{ name }}</h1>
{% else %}
<h1>Hello World</h1>
{% endif %}
</body>
</html>

app.py

1
2
3
4
5
6
7
8
9
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
return render_template('test.html',name='Lixiney')

if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0',port=80)

循环语句

test.html

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
{% for name in user %}
<h1>Hello {{ name }}</h1>
{% endfor %}
</body>
</html>

app.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
user = [
'test1',
'test2',
'test3'
]
return render_template('test.html',user=user)

if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0',port=80)