Flask框架使用之简陋版
之前的小程序做着做着,发现只有前端是不够的,后端开发貌似重要一些。但是仔细想想,我好像连php都不太会!!这时我了解到了Flask,Flask是使用本宝宝最喜欢的Python语言编写的WEB应用框架,刚好可以和yolov5模型进行很好的衔接。同时Flask相比起Django而言比较轻量,关键名字也比较顺口,因此最后选择了Flask作为后端开发的框架进行简单了解,记录下简陋到只剩一条裤头的Flask基本用法。
目录- Flask路由(route)及变量规则
- 渲染模板(render_template)
- request对象
- \(request.method\) # 请求类型
- $request.form.get('
') $# 获取表单数据
- 重定向
- 返回json数据给前端
- 异常处理
- 过滤器
- Flask表单
Flask路由(route)及变量规则
使用
route()装饰器来把函数绑定到 URL:
from flask import Flask # 导入Flask类
app = Flask(__name__) # 实例化一个Flask对象
@app.route('/user/', methods=['GET', 'POST']) # 设置路由
'''常用的转换器:int(正整数)、float(正浮点数)string(不带斜杠的字符串)、path(包含斜杠的文本)、自定义转换器'''
def hello_world(id):
if id == 1:
return '小红'
if id == 2:
return '小明'
if id == 3:
return '大壮'
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True) #启用调试
渲染模板(render_template)
“在 Python 内部生成 HTML 不好玩,且相当笨拙。因为你必须自己负责 HTML 转义, 以确保应用的安全。因此, Flask 自动为你配置 Jinja2 模板引擎。”
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/form', methods=['GET','POST'])
def hello():
return render_template('form.html', data=data) # 将data传给前端HTML页面
if __name__ == '__main__':
app.run(debug=True)
request对象
from flask import request # 导入request类
\(request.method\) # 请求类型
$request.form.get('') $# 获取表单数据
重定向
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/index', methods=['GET','POST'])
def index():
return redirect(url_for('hello')) # 重定向到hello()函数的url
@app.route('/')
def hello():
return 'hello world!'
if __name__ == '__main__':
app.run(debug=True)
返回json数据给前端
from flask import Flask, make_response, json, jsonify
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
@app.route('/index')
def index():
data = {
'name' : '张三'
}
# response = make_response(json.dumps(data, ensure_ascii=False))
# response.mimetype = 'application/json'
# return response
return jsonify(data)
app.run(debug=True)
异常处理
-
raise:主动抛出异常
-
abort:在网页当中抛出异常
from flask import Flask, render_template, request, abort
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
@app.route('/index', methods=['GET', 'POST'])
def index():
if request.method == 'GET':
return render_template('form.html')
if request.method == 'POST':
name = request.form.get('name')
password = request.form.get('passwd')
if name == 'admin' and password == '123':
return '登陆成功'
else:
abort(404)
return None
# 自定义错误处理方法
@app.errorhandler(404)
def handle_404_error(err):
return '出现了404错误,错误信息是:%s' % err
app.run(debug=True)
过滤器
过滤器的本质就是函数。
{{variable | filter_name(*args)}} //使用方式:变量名|过滤器(支持链式调用);常用过滤器:略
app.add_template_filter(<自定义函数名>,<'过滤器名'>) # 自定义过滤器
Flask表单
暂时没有使用的必要。