flask框架

一.入门

1.demo

1
2
3
4
5
6
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello, World!'

2.可变参数

1
2
3
4
@app.route('/<user>')
def hello_world(user):
return 'Hello {}'.format(user)

image-20210408102134741

3.唯一url和重定向

1
2
3
// @app.route('/project') @app.route('/project/')
def projects():
return 'project1'

4.url_for()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from flask import Flask, url_for
from markupsafe import escape

app = Flask(__name__)

@app.route('/')
def index():
return 'index'

@app.route('/login')
def login():
return 'login'

@app.route('/user/<username>')
def profile(username):
return '{}\'s profile'.format(escape(username))

with app.test_request_context():
print(url_for('index'))
print(url_for('login'))
print(url_for('login', next='/'))
print(url_for('profile', username='John Doe'))


# 静态文件:
url_for('static', filename='style.css')

5.http方法

1
2
3
4
5
6
7
8
9
10
11
12
from flask import request

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()

# 获取提交的数据
User = request.args.get(‘nm’)
user = request.form['nm']

6.模板

1
2
3
4
5
6
from flask import render_template

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
1
2
3
4
5
6
7
<!doctype html>
<title>Hello from Flask</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello, World!</h1>
{% endif %}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 设置
resp = make_response("success") # 设置响应体
resp.set_cookie("w3cshool", "w3cshool", max_age=3600)

# 获取
cookie_1 = request.cookies.get("w3cshool")

# 删除
resp = make_response("del success") # 设置响应体
resp.delete_cookie("w3cshool")

# 实例
from flask import Flask, make_response, request

app = Flask(__name__)

@app.route("/set_cookies")
def set_cookie():
resp = make_response("success")
resp.set_cookie("w3cshool", "w3cshool",max_age=3600)
return resp

@app.route("/get_cookies")
def get_cookie():
cookie_1 = request.cookies.get("w3cshool") # 获取名字为Itcast_1对应cookie的值
return cookie_1

@app.route("/delete_cookies")
def delete_cookie():
resp = make_response("del success")
resp.delete_cookie("w3cshool")

return resp

if __name__ == '__main__':
app.run(debug=True)

8.session

1
2
3
4
5
# 设置
Session[‘username’] = ’admin’
# 释放
session.pop('username', None)
#

9.重定向和错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from flask import Flask, redirect, url_for, render_template, request
# Initialize the Flask application
app = Flask(__name__)

@app.route('/')
def index():
return render_template('log_in.html')

@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST' and
request.form['username'] == 'admin' :
return redirect(url_for('success'))
return redirect(url_for('index'))

@app.route('/success')
def success():
return 'logged in successfully'

if __name__ == '__main__':
app.run(debug = True)
# 错误
from flask import Flask, redirect, url_for, render_template, request, abort
app = Flask(__name__)

@app.route('/')
def index():
return render_template('log_in.html')

@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
if request.form['username'] == 'admin' :
return redirect(url_for('success'))
else:
abort(401)
else:
return redirect(url_for('index'))

@app.route('/success')
def success():
return 'logged in successfully'

if __name__ == '__main__':
app.run(debug = True)

9.文件上传

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<html>
<head>
<title>File Upload</title>
</head>
<body>
<form action="http://localhost:5000/uploader" method="POST" enctype="multipart/form-data">
<input type="file" name="file" accept=".jpg,.png" />
<input type="submit" />
</form>
</body>
</html>
# python代码
from flask import Flask, render_template, request
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'upload/'

@app.route('/upload')
def upload_file():
return render_template('upload.html')

@app.route('/uploader', methods = ['GET', 'POST'])
def uploader():
if request.method == 'POST':
f = request.files['file']
f.save(os.path.join(app.config['UPLOAD_FOLDER'],secure_filename(f.filename)))
return 'file uploaded successfully'

if __name__ == '__main__':
app.run()