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表单

暂时没有使用的必要。