flask的诞生于2010年的愚人节,本来只是作者无意间写的一个小玩具,没想到它却悄悄流行起来了。虽然已经过了10多年,flask一直没有发布一个严肃的正式版本,但是却不能阻挡它已经成了github上最受好评的Python Web框架。
1. 安装pip install flask2. 快速入门
仅需5行代码和一个main方法入口
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run(port=8081)
然后在浏览器输入 http://localhost:8081,就会返回一个 "Hello World!"
3. 带参数的请求需要导入flask里面的 request库函数
from flask import Flask from flask import request app = Flask(__name__) # 传参 @app.route('/info') def info(): id = request.args.get(key='id', default='1') return id if __name__ == "__main__": app.run(port=8081)
然后在浏览器输入 http://localhost:8081?id=2,就会返回一个 "2"
4. 跨域问题当前端向flask请求数据时,可能会报一个跨域CORS的错误。
Access to XMLHttpRequest at 'http://127.0.0.1:8081/python/getLocation' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
这时需要在后端的程序稍作修改。(浏览器地址栏或者postman访问接口不会出错,是因为他们都已经对跨域问题做了处理)
import json from flask import Flask from flask import jsonify from flask import request from flask_cors import CORS # 解决跨域的库 app = Flask(__name__) # 跨域问题 CORS(app, supports_credentials=True) # hello world @app.route("/") def hello(): return "Hello World!" # 传参 @app.route('/info') def info(): id = request.args.get(key='id', default='1') return id if __name__ == "__main__": app.run(port=8081)5. 返回json字符串
这里使用 flask框架中的 jsonify库,pytho有自带的json库。
jsonify对json作了简单封装。主要优势有两点:
- 对json作了一定的压缩,去掉了空格等
- 更加符合传输协议
import json from flask import Flask from flask import jsonify from flask import request from flask_cors import CORS app = Flask(__name__) # 跨域问题 CORS(app, supports_credentials=True) # hello world @app.route("/") def hello(): return "Hello World!" # 传参 @app.route('/info') def info(): id = request.args.get(key='id', default='1') return id # 返回json字符串 @app.route('/python/getLocation') def getLocaltion(): with open('传感器位置信息.csv', 'r', newline='') as f: lines = f.readlines()[1:] data = {} for i in range(len(lines)): temp_list = lines[i].split(',') data[str(i)] = [temp_list[0], temp_list[1], temp_list[2]] return jsonify(data) if __name__ == "__main__": app.run(port=8081)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)