1、入门
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World'
if __name__ == '__main__':
app.debug = True # 设置调试模式,生产模式的时候要关掉debug
app.run()
运行,访问localhost:5000
2、模板
Flask的模板功能是基于Jinja2模板引擎实现的
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route('/hello')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=7010)
在当前目录下,创建一个子目录”templates”(注意,一定要使用这个名字)。然后在”templates”目录下创建文件”hello.html”
<!doctype html>
<title>Hello Sample</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello World!</h1>
{% endif %}
3、API发布
xxx/api/tem?start_day=xxx&end_day=xxx
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/api/tem', methods=['GET'])
def tem_index():
request.values.get('start_day'), request.values.get('end_day')
4、gunicorn部署Flask服务
pip install gunicorn
# pip3 install gunicorn
/opt/conda/envs/grib/bin/gunicorn --config=/data/proj-py/cq-grid-decode/wsgi.py webapi:app
err:No module named 'gevent'
# 安装 gevent
pip install gevent
5、获取 GET 请求参数
@app.route('/', methods = ["GET","POST"])
def get_data():
# http://127.0.0.1:5000/index?name=john&age=20
#可以通过 request 的 args 属性来获取参数
name = request.args.get("name", type=str)
age = request.args.get("age")
max_lon = request.args.get("maxLon", type=float)
6、获取 POST 请求参数
from flask import request, jsonify
@app.route('/', methods = ["POST"])
def post_data():
#{"obj": [{"name":"John","age":"20"}] }
# 方法一
data = request.get_json() # 获取 JSON 数据
data = pd.DataFrame(data["obj"]) # 获取参数并转变为 DataFrame 结构
# 方法二
# data = request.json # 获取 JOSN 数据
# data = data.get('obj') # 以字典形式获取参数
7、info日志输出
import logging
logging.basicConfig(level=logging.INFO)