文章目录
目录
前言
由于目标检测与追踪都是使用的python语言,但是我的整体框架是用的springboot。若将两者结合会比较困难,所以我选择使用flask框架来包装目标检测与追踪代码。然后最终部署到docker中,利用springboot来调用其webAPI。
一、Flask是什么
Flask是一个用Python编写的Web应用程序轻型框架,相较于Django更加容易掌握也更加灵活,并且支持MVC模型。由于本项目的不需要繁杂的操作,只需要简单的调用即可,所以这里选择更容易上手开发的flask。
二、Flask基础
1.路由规则
Flask中的 route()装饰器
装饰器用于将URL绑定到函数。
@app.route('/hi')
def hi(): # put application's code here
return 'hi World!'
if __name__ == '__main__':
app.run()
这里,URL /hello
规则绑定到 hi()
函数。 因此,如果用户访问URL: http://localhost:5000/hello
,就会调用 hi()
函数,这个函数中的执行的结果输出将在浏览器中呈现。
@app.route('/hi', methods=['POST'])
def hi(): # put application's code here
return 'hi World!'
也可以在后边加上methods=['POST'],来表示只接受POST请求,其他的GET请求等也可以按照此方式来应用
@app.route('/user/<id>')
def hello_world(id): # put application's code here
if id == '1':
return 'python'
if id == str(2):
return 'java'
if int(id) == 3:
return 'flask'
return 'Hello World!'
注意此处传入的id为字符串,需要转换后进行比较。
2、Flask-Cors 解决跨域问题
pip install flask-cors
3、Flask-Uploads 接受浏览器上传的文件
随着业务代码的增加,将所有代码都放在app.py文件中,是非常不合适的。这不仅会让代码阅读变得困难,而且会给后期维护带来麻烦。所以我们按照模块划分WEB函数。
把不同功能的module分开。可以让应用模块化,针对大型应用。
4、Flask蓝图功能
4.1 什么是flask蓝图
- 随着 Flask 程序越来越复杂,需要对程序进行模块化的处理
- 蓝图 (Blueprint) 是 Flask 程序的模块化处理机制
- 它是一个存储视图方法的集合
- Flask 程序通过 Blueprint 来组织 URL 以及处理请求
4.2 创建一个简单的蓝图例子
创建下方文件
并且在app.py文件中添加框出的代码
启动程序:
5、Flask模板语言
Flask支持动态页面技术,在后台渲染出动态的HTNML页面
Jinja2是python下一个被广泛应用的模板引擎,语法简单。
Flask中的模板文件存放在templates目录,图片,样式和脚本放在static目录中
5.1 页面渲染
WEB方法中,render_template()函数用来把模板文件渲染成动态的html
@user.route('/user/info')
def info():
return render_template("user_info.html",
name="aaa",
age=29,
sex="男")
模板文件中,双大括号{{ 变量名 }} 可以对模板进行插值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>info</title>
</head>
<body>
<p>name:{{ name }}</p>
<p>age:{{ age }}</p>
<p>sex:{{ sex }}</p>
</body>
</html>
结果:
5.2 模板中的if for 语句
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<li>
{% for gift in gifts.values() %}
{% if gift|length > 5 %}
<h1>{{gift}}</h1>
{% else %}
<h3>{{gift}}</h3>
{% endif %}
{% endfor %}
</li>
</body>
</html>
在模板文件中,使用if判断,语法如下:
{% if 判断条件 %}
满足条件执行的语句
{% else %}
不满足执行的语句
{% endif %}
注意,和python的if语句不一样,模板中的if语句结束时,需要有{% endif %}
在模板中,使用for循环语句如下:
{% for x in xx %}
执行的代码
{% endfor %}
注意,和python的for语句不一样,模板中的for语句结束时,需要有{% endfor %}