├── .gitignore ├── README.md └── demo ├── flask-demo-001 ├── HelloWorld │ ├── server.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md ├── flask-demo-002 ├── HelloWorld │ ├── server.py │ ├── server2.py │ ├── server3.py │ ├── server4.py │ ├── server5.py │ ├── server6.py │ ├── server7.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md ├── flask-demo-003 ├── HelloWorld │ ├── client.py │ ├── server.py │ ├── server2.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md ├── flask-demo-004 ├── HelloWorld │ ├── client.py │ ├── client2.py │ ├── server.py │ ├── server2.py │ ├── server3.py │ ├── server4.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md ├── flask-demo-005 ├── HelloWorld │ ├── Lenna.jpg │ ├── client.py │ ├── server.py │ ├── static │ │ ├── .keep │ │ └── uploads │ │ │ ├── .keep │ │ │ └── Lenna.jpg │ └── templates │ │ └── .keep └── README.md ├── flask-demo-006 ├── HelloWorld │ ├── server.py │ ├── server2.py │ ├── server3.py │ ├── server4.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md ├── flask-demo-007 ├── HelloWorld │ ├── server.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md ├── flask-demo-008 ├── HelloWorld │ ├── server.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md ├── flask-demo-009 ├── HelloWorld │ ├── server.py │ ├── static │ │ └── .keep │ └── templates │ │ ├── .keep │ │ ├── default.html │ │ └── user_info.html └── README.md ├── flask-demo-010 ├── HelloWorld │ ├── server.py │ ├── server2.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md ├── flask-demo-011 ├── HelloWorld │ ├── server.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md ├── flask-demo-012 ├── HelloWorld │ ├── server.py │ ├── static │ │ └── .keep │ └── templates │ │ └── .keep └── README.md └── flask-demo-013 ├── HelloWorld ├── server.py ├── server2.py ├── static │ └── .keep └── templates │ └── .keep └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | **/.DS_Store 3 | **/*.pyc 4 | **/*.pyo -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python Flask Web 框架教程 2 | 3 | Flask 是一个轻量级的基于 Python 的 Web 框架,简单易用,适合快速开发。 4 | 5 | 6 | * [Python Flask:安装 Flask](https://www.letiantian.xyz/p/101330.html) 7 | * [Python Flask:从 Hello Wolrd 开始](https://www.letiantian.xyz/p/101331.html) 8 | * [Python Flask:获取 URL 参数](https://www.letiantian.xyz/p/101332.html) 9 | * [Python Flask:获取 POST 方法传送的数据](https://www.letiantian.xyz/p/101333.html) 10 | * [Python Flask:处理和响应 JSON 数据](https://www.letiantian.xyz/p/101334.html) 11 | * [Python Flask:上传文件](https://www.letiantian.xyz/p/101335.html) 12 | * [Python Flask:Restful URL](https://www.letiantian.xyz/p/101336.html) 13 | * [Python Flask:使用 url_for 生成链接](https://www.letiantian.xyz/p/101337.html) 14 | * [Python Flask:使用 redirect 重定向网址](https://www.letiantian.xyz/p/101338.html) 15 | * [Python Flask:使用 Jinja2 模板引擎](https://www.letiantian.xyz/p/101339.html) 16 | * [Python Flask:自定义404等错误的响应](https://www.letiantian.xyz/p/101340.html) 17 | * [Python Flask:用户会话](https://www.letiantian.xyz/p/101341.html) 18 | * [Python Flask:使用 Cookie](https://www.letiantian.xyz/p/101342.html) 19 | * [Python Flask:使用闪存系统 flashing system](https://www.letiantian.xyz/p/101343.html) 20 | -------------------------------------------------------------------------------- /demo/flask-demo-001/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | 3 | app = Flask("my-app") 4 | 5 | @app.route('/') 6 | def hello_world(): 7 | return 'Hello World!' 8 | 9 | if __name__ == '__main__': 10 | app.run(host='127.0.0.1', port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-001/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-001/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-001/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-001/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-001/README.md: -------------------------------------------------------------------------------- 1 | Hello World -------------------------------------------------------------------------------- /demo/flask-demo-002/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return request.args.__str__() 9 | 10 | 11 | if __name__ == '__main__': 12 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-002/HelloWorld/server2.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | print(request.path) 9 | print(request.full_path) 10 | return request.args.__str__() 11 | 12 | 13 | if __name__ == '__main__': 14 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-002/HelloWorld/server3.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return request.args.get('info') 9 | 10 | 11 | if __name__ == '__main__': 12 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-002/HelloWorld/server4.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask(__name__) 4 | 5 | @app.route('/') 6 | def hello_world(): 7 | r = request.args.get('info') 8 | if r==None: 9 | # do something 10 | return '' 11 | return r 12 | 13 | if __name__ == '__main__': 14 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-002/HelloWorld/server5.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask(__name__) 4 | 5 | @app.route('/') 6 | def hello_world(): 7 | r = request.args.get('info', 'hi') 8 | return r 9 | 10 | if __name__ == '__main__': 11 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-002/HelloWorld/server6.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | print(request.args) 9 | r = request.args.get('p') 10 | return r 11 | 12 | 13 | if __name__ == '__main__': 14 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-002/HelloWorld/server7.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | r = request.args.getlist('p') # 返回一个list 9 | return str(r) 10 | 11 | 12 | if __name__ == '__main__': 13 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-002/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-002/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-002/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-002/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-002/README.md: -------------------------------------------------------------------------------- 1 | 获取 URL 参数 -------------------------------------------------------------------------------- /demo/flask-demo-003/HelloWorld/client.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | user_info = {'name': 'letian', 'password': '123'} 4 | r = requests.post("http://127.0.0.1:5000/register", data=user_info) 5 | 6 | print(r.text) -------------------------------------------------------------------------------- /demo/flask-demo-003/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'hello world' 9 | 10 | 11 | @app.route('/register', methods=['POST']) 12 | def register(): 13 | print(request.headers) 14 | print(request.stream.read()) 15 | return 'welcome' 16 | 17 | 18 | if __name__ == '__main__': 19 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-003/HelloWorld/server2.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask(__name__) 4 | 5 | @app.route('/') 6 | def hello_world(): 7 | return 'hello world' 8 | 9 | 10 | @app.route('/register', methods=['POST']) 11 | def register(): 12 | print(request.headers) 13 | # print(request.stream.read()) # 不要用,否则下面的form取不到数据 14 | print(request.form) 15 | print(request.form['name']) 16 | print(request.form.get('name')) 17 | print(request.form.getlist('name')) 18 | print(request.form.get('nickname', default='little apple')) 19 | return 'welcome' 20 | 21 | 22 | if __name__ == '__main__': 23 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-003/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-003/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-003/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-003/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-003/README.md: -------------------------------------------------------------------------------- 1 | 获取 POST 方法传送的数据 -------------------------------------------------------------------------------- /demo/flask-demo-004/HelloWorld/client.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | json_data = {'a': 1, 'b': 2} 4 | 5 | r = requests.post("http://127.0.0.1:5000/add", json=json_data) 6 | 7 | print(r.text) -------------------------------------------------------------------------------- /demo/flask-demo-004/HelloWorld/client2.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | json_data = {'a': 1, 'b': 2} 4 | 5 | r = requests.post("http://127.0.0.1:5000/add", json=json_data) 6 | 7 | print(r.headers) 8 | print(r.text) -------------------------------------------------------------------------------- /demo/flask-demo-004/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | app = Flask("my-app") 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'Hello World!' 9 | 10 | 11 | @app.route('/add', methods=['POST']) 12 | def add(): 13 | print(request.headers) 14 | print(type(request.json)) 15 | print(request.json) 16 | result = request.json['a'] + request.json['b'] 17 | return str(result) 18 | 19 | 20 | if __name__ == '__main__': 21 | app.run(host='127.0.0.1', port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-004/HelloWorld/server2.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request, Response 2 | import json 3 | 4 | app = Flask("my-app") 5 | 6 | 7 | @app.route('/') 8 | def hello_world(): 9 | return 'Hello World!' 10 | 11 | 12 | @app.route('/add', methods=['POST']) 13 | def add(): 14 | result = {'sum': request.json['a'] + request.json['b']} 15 | return Response(json.dumps(result), mimetype='application/json') 16 | 17 | 18 | if __name__ == '__main__': 19 | app.run(host='127.0.0.1', port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-004/HelloWorld/server3.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request, Response 2 | import json 3 | 4 | app = Flask("my-app") 5 | 6 | 7 | @app.route('/') 8 | def hello_world(): 9 | return 'Hello World!' 10 | 11 | 12 | @app.route('/add', methods=['POST']) 13 | def add(): 14 | result = {'sum': request.json['a'] + request.json['b']} 15 | resp = Response(json.dumps(result), mimetype='application/json') 16 | resp.headers.add('Server', 'python flask') 17 | return resp 18 | 19 | 20 | if __name__ == '__main__': 21 | app.run(host='127.0.0.1', port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-004/HelloWorld/server4.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request, jsonify 2 | 3 | app = Flask("my-app") 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'Hello World!' 9 | 10 | 11 | @app.route('/add', methods=['POST']) 12 | def add(): 13 | result = {'sum': request.json['a'] + request.json['b']} 14 | return jsonify(result) 15 | 16 | 17 | if __name__ == '__main__': 18 | app.run(host='127.0.0.1', port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-004/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-004/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-004/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-004/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-004/README.md: -------------------------------------------------------------------------------- 1 | 处理和响应JSON数据 2 | -------------------------------------------------------------------------------- /demo/flask-demo-005/HelloWorld/Lenna.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-005/HelloWorld/Lenna.jpg -------------------------------------------------------------------------------- /demo/flask-demo-005/HelloWorld/client.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | file_data = {'image': open('Lenna.jpg', 'rb')} 4 | 5 | user_info = {'info': 'Lenna'} 6 | 7 | r = requests.post("http://127.0.0.1:5000/upload", data=user_info, files=file_data) 8 | 9 | print(r.text) -------------------------------------------------------------------------------- /demo/flask-demo-005/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | 3 | from werkzeug.utils import secure_filename 4 | import os 5 | 6 | app = Flask(__name__) 7 | 8 | # 文件上传目录 9 | app.config['UPLOAD_FOLDER'] = 'static/uploads/' 10 | # 支持的文件格式 11 | app.config['ALLOWED_EXTENSIONS'] = {'png', 'jpg', 'jpeg', 'gif'} # 集合类型 12 | 13 | 14 | # 判断文件名是否是我们支持的格式 15 | def allowed_file(filename): 16 | return '.' in filename and \ 17 | filename.rsplit('.', 1)[1] in app.config['ALLOWED_EXTENSIONS'] 18 | 19 | 20 | @app.route('/') 21 | def hello_world(): 22 | return 'hello world' 23 | 24 | 25 | @app.route('/upload', methods=['POST']) 26 | def upload(): 27 | upload_file = request.files['image'] 28 | if upload_file and allowed_file(upload_file.filename): 29 | filename = secure_filename(upload_file.filename) 30 | # 将文件保存到 static/uploads 目录,文件名同上传时使用的文件名 31 | upload_file.save(os.path.join(app.root_path, app.config['UPLOAD_FOLDER'], filename)) 32 | return 'info is '+request.form.get('info', '')+'. success' 33 | else: 34 | return 'failed' 35 | 36 | 37 | if __name__ == '__main__': 38 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-005/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-005/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-005/HelloWorld/static/uploads/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-005/HelloWorld/static/uploads/.keep -------------------------------------------------------------------------------- /demo/flask-demo-005/HelloWorld/static/uploads/Lenna.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-005/HelloWorld/static/uploads/Lenna.jpg -------------------------------------------------------------------------------- /demo/flask-demo-005/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-005/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-005/README.md: -------------------------------------------------------------------------------- 1 | 上传文件 -------------------------------------------------------------------------------- /demo/flask-demo-006/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'hello world' 9 | 10 | 11 | @app.route('/user/') 12 | def user(username): 13 | print(username) 14 | print(type(username)) 15 | return 'hello ' + username 16 | 17 | 18 | @app.route('/user//friends') 19 | def user_friends(username): 20 | print(username) 21 | print(type(username)) 22 | return 'Hello {}. They are your friends.'.format(username) 23 | 24 | 25 | if __name__ == '__main__': 26 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-006/HelloWorld/server2.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'hello world' 9 | 10 | 11 | @app.route('/page/') 12 | def page(num): 13 | print(num) 14 | print(type(num)) 15 | return 'hello world' 16 | 17 | 18 | if __name__ == '__main__': 19 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-006/HelloWorld/server3.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'hello world' 9 | 10 | 11 | @app.route('/page/-') 12 | def page(num1, num2): 13 | print(num1) 14 | print(num2) 15 | return 'hello world' 16 | 17 | 18 | if __name__ == '__main__': 19 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-006/HelloWorld/server4.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, url_for 2 | 3 | from werkzeug.routing import BaseConverter 4 | 5 | 6 | class MyIntConverter(BaseConverter): 7 | 8 | def __init__(self, url_map): 9 | super(MyIntConverter, self).__init__(url_map) 10 | 11 | def to_python(self, value): 12 | return int(value) 13 | 14 | def to_url(self, value): 15 | return value * 2 16 | 17 | 18 | app = Flask(__name__) 19 | app.url_map.converters['my_int'] = MyIntConverter 20 | 21 | 22 | @app.route('/') 23 | def hello_world(): 24 | return 'hello world' 25 | 26 | 27 | @app.route('/page/') 28 | def page(num): 29 | print(num) 30 | print(url_for('page', num=123)) # page 对应的是 page函数 ,num 对应对应`/page/`中的num,必须是str 31 | return 'hello world' 32 | 33 | 34 | if __name__ == '__main__': 35 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-006/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-006/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-006/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-006/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-006/README.md: -------------------------------------------------------------------------------- 1 | Restful URL -------------------------------------------------------------------------------- /demo/flask-demo-007/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, url_for 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | pass 9 | 10 | 11 | @app.route('/user/') 12 | def user(name): 13 | pass 14 | 15 | 16 | @app.route('/page/') 17 | def page(num): 18 | pass 19 | 20 | 21 | @app.route('/test') 22 | def test(): 23 | print(url_for('hello_world')) 24 | print(url_for('user', name='letian')) 25 | print(url_for('page', num=1, q='hadoop mapreduce 10%3')) 26 | print(url_for('static', filename='uploads/01.jpg')) 27 | return 'Hello' 28 | 29 | 30 | if __name__ == '__main__': 31 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-007/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-007/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-007/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-007/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-007/README.md: -------------------------------------------------------------------------------- 1 | 使用 url_for 生成链接 -------------------------------------------------------------------------------- /demo/flask-demo-008/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, url_for, redirect 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'hello world' 9 | 10 | 11 | @app.route('/test1') 12 | def test1(): 13 | print('this is test1') 14 | return redirect(url_for('test2')) 15 | 16 | 17 | @app.route('/test2') 18 | def test2(): 19 | print('this is test2') 20 | return 'this is test2' 21 | 22 | 23 | if __name__ == '__main__': 24 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-008/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-008/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-008/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-008/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-008/README.md: -------------------------------------------------------------------------------- 1 | 使用 redirect 重定向网址 2 | -------------------------------------------------------------------------------- /demo/flask-demo-009/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'hello world' 9 | 10 | 11 | @app.route('/user') 12 | def user(): 13 | user_info = { 14 | 'name': 'letian', 15 | 'email': '123@aa.com', 16 | 'age':0, 17 | 'github': 'https://github.com/letiantian' 18 | } 19 | return render_template('user_info.html', page_title='letian\'s info', user_info=user_info) 20 | 21 | 22 | if __name__ == '__main__': 23 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-009/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-009/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-009/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-009/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-009/HelloWorld/templates/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% if page_title %} 5 | {{ page_title }} 6 | {% endif %} 7 | 8 | 9 | 10 | 11 | {% block body %}{% endblock %} 12 | 13 | -------------------------------------------------------------------------------- /demo/flask-demo-009/HelloWorld/templates/user_info.html: -------------------------------------------------------------------------------- 1 | {% extends "default.html" %} 2 | 3 | {% block body %} 4 | {% for key in user_info %} 5 | 6 | {{ key }}: {{ user_info[key] }}
7 | 8 | {% endfor %} 9 | {% endblock %} -------------------------------------------------------------------------------- /demo/flask-demo-009/README.md: -------------------------------------------------------------------------------- 1 | 使用 Jinja2 模板 -------------------------------------------------------------------------------- /demo/flask-demo-010/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template_string, abort 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'hello world' 9 | 10 | 11 | @app.route('/user') 12 | def user(): 13 | abort(401) # Unauthorized 未授权 14 | print('Unauthorized, 请先登录') 15 | 16 | 17 | if __name__ == '__main__': 18 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-010/HelloWorld/server2.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template_string, abort 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route('/') 7 | def hello_world(): 8 | return 'hello world' 9 | 10 | 11 | @app.route('/user') 12 | def user(): 13 | abort(401) # Unauthorized 14 | 15 | 16 | @app.errorhandler(401) 17 | def page_unauthorized(error): 18 | return render_template_string('

Unauthorized

{{ error_info }}

', error_info=error), 401 19 | 20 | 21 | if __name__ == '__main__': 22 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-010/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-010/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-010/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-010/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-010/README.md: -------------------------------------------------------------------------------- 1 | 自定义404等错误的响应 -------------------------------------------------------------------------------- /demo/flask-demo-011/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template_string, \ 2 | session, request, redirect, url_for 3 | 4 | app = Flask(__name__) 5 | 6 | app.secret_key = 'F12Zr47j\3yX R~X@H!jLwf/T' 7 | 8 | 9 | @app.route('/') 10 | def hello_world(): 11 | return 'hello world' 12 | 13 | 14 | @app.route('/login') 15 | def login(): 16 | page = ''' 17 |
18 |

name:

19 | 20 |
21 | ''' 22 | return render_template_string(page) 23 | 24 | 25 | @app.route('/do_login', methods=['POST']) 26 | def do_login(): 27 | name = request.form.get('user_name') 28 | session['user_name'] = name 29 | return 'success' 30 | 31 | 32 | @app.route('/show') 33 | def show(): 34 | return session['user_name'] 35 | 36 | 37 | @app.route('/logout') 38 | def logout(): 39 | session.pop('user_name', None) 40 | return redirect(url_for('login')) 41 | 42 | 43 | if __name__ == '__main__': 44 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-011/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-011/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-011/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-011/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-011/README.md: -------------------------------------------------------------------------------- 1 | 用户会话 -------------------------------------------------------------------------------- /demo/flask-demo-012/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request, Response, make_response 2 | import time 3 | 4 | app = Flask(__name__) 5 | 6 | 7 | @app.route('/') 8 | def hello_world(): 9 | return 'hello world' 10 | 11 | 12 | @app.route('/add') 13 | def login(): 14 | res = Response('add cookies') 15 | res.set_cookie(key='name', value='letian', expires=time.time()+6*60) 16 | return res 17 | 18 | 19 | @app.route('/show') 20 | def show(): 21 | return request.cookies.__str__() 22 | 23 | 24 | @app.route('/del') 25 | def del_cookie(): 26 | res = Response('delete cookies') 27 | res.set_cookie('name', '', expires=0) 28 | return res 29 | 30 | 31 | if __name__ == '__main__': 32 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-012/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-012/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-012/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-012/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-012/README.md: -------------------------------------------------------------------------------- 1 | 使用 Cookie -------------------------------------------------------------------------------- /demo/flask-demo-013/HelloWorld/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, flash, get_flashed_messages 2 | import time 3 | 4 | app = Flask(__name__) 5 | app.secret_key = 'some_secret' 6 | 7 | 8 | @app.route('/') 9 | def index(): 10 | return 'hi' 11 | 12 | 13 | @app.route('/gen') 14 | def gen(): 15 | info = 'access at '+ time.time().__str__() 16 | flash(info) 17 | return info 18 | 19 | 20 | @app.route('/show1') 21 | def show1(): 22 | return get_flashed_messages().__str__() 23 | 24 | 25 | @app.route('/show2') 26 | def show2(): 27 | return get_flashed_messages().__str__() 28 | 29 | 30 | if __name__ == "__main__": 31 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-013/HelloWorld/server2.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, flash, get_flashed_messages 2 | import time 3 | 4 | app = Flask(__name__) 5 | app.secret_key = 'some_secret' 6 | 7 | 8 | @app.route('/') 9 | def index(): 10 | return 'hi' 11 | 12 | 13 | @app.route('/gen') 14 | def gen(): 15 | info = 'access at '+ time.time().__str__() 16 | flash('show1 '+info, category='show1') 17 | flash('show2 '+info, category='show2') 18 | return info 19 | 20 | 21 | @app.route('/show1') 22 | def show1(): 23 | return get_flashed_messages(category_filter='show1').__str__() 24 | 25 | 26 | @app.route('/show2') 27 | def show2(): 28 | return get_flashed_messages(category_filter='show2').__str__() 29 | 30 | 31 | if __name__ == "__main__": 32 | app.run(port=5000, debug=True) -------------------------------------------------------------------------------- /demo/flask-demo-013/HelloWorld/static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-013/HelloWorld/static/.keep -------------------------------------------------------------------------------- /demo/flask-demo-013/HelloWorld/templates/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letiantian/flask-tutorial/40e5b46fa7e257ead2eddc5afdf534c2053f97aa/demo/flask-demo-013/HelloWorld/templates/.keep -------------------------------------------------------------------------------- /demo/flask-demo-013/README.md: -------------------------------------------------------------------------------- 1 | 闪存系统 flash system --------------------------------------------------------------------------------