Flask框架使用
之前的小程序做着做着,发现只有前端是不够的,还需要写一些后端代码。但是仔细一想,我好像连php都不太会用!!这时我了解到了Flask,Flask是使用本宝宝最喜欢的Python语言编写的WEB应用框架,刚好可以和yolov5模型进行很好的衔接。同时Flask相比起Django而言比较轻量,关键名字也比较顺口,因此最后选择了Flask作为后端开发的框架进行简单了解,记录下简陋到只剩一条裤头的Flask基本用法。
目录
Flask路由(route)及变量规则
使用
route()
装饰器来把函数绑定到 URL:
from flask import Flask # 导入Flask类 app = Flask(__name__) # 实例化一个Flask对象 @app.route('/user/<int:id>', 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类
# 请求类型
# 获取表单数据
重定向
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表单
暂时没有使用的必要。
接收文件
接收前端传来的POST请求并返回图片的base64编码值,对我的小程序而言有这个基本就够了。
import base64 from flask import request from flask import Flask import os app = Flask(__name__) # 定义路由 @app.route("/photo", methods=['POST']) def get_frame(): # 接收图片 upload_file = request.files['file'] # 获取图片名 file_name = upload_file.filename # 文件保存目录(桌面) file_path = r'C:\Users\10514\Desktop\archive\img_temp' if upload_file: # 地址拼接 file_paths = os.path.join(file_path, file_name) # 保存接收的图片到桌面 upload_file.save(file_paths) # 随便打开一张其他图片作为结果返回, with open(r'C:\Users\10514\Desktop\archive\knife\train\knife_0.jpg', 'rb') as f: res = base64.b64encode(f.read()) return res if __name__ == "__main__": app.run()
解决无法访问问题
app.run()默认的host参数值为本机ip——'127.0.0.1',此时只能通过本机地址进行访问,无论从内网还是外网都不能进行访问。
此时修改host参数为默认ip——'0.0.0.0':
app.run(debug=True, port=80, host='0.0.0.0')
这样运行时会自动匹配到本机的局域网ip地址,可以通过该地址进行访问。
本文作者:菜鸟侦探乐
本文链接:https://www.cnblogs.com/zouludaxia/p/15978496.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析