Flask框架学习(持续更新)


前言

由于目标检测与追踪都是使用的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 %}

总结

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 学习 C 语言的框架可以因人而异,具体要学习哪个框架取决于你的学习目标和需求。如果你希望开发桌面应用程序,可以学习 Qt 框架。如果您想开发 Web 应用程序,可以学习 Flask 框架。如果您希望学习游戏开发,可以学习 Unity 框架。最终的选择取决于你的学习目标和兴趣。 ### 回答2: 学习框架取决于你的学习目标和需求。以下是几个流行的框架,你可以根据自己的兴趣和实际需求进行选择: 1. 前端框架: - React:适合构建交互性强、大型前端应用,且有庞大社区支持。 - Vue:易学易用,适合构建中小型前端应用,具有高度灵活性。 - Angular:拥有强大的功能和丰富的工具集,适合大型企业级前端应用。 2. 后端框架: - Django:适合构建复杂的Web应用,提供全功能的后端开发解决方案。 - Flask:轻量级框架,适合快速搭建简单的Web应用和API。 - Express.js:基于Node.js的框架,适合构建高性能的Web应用。 3. 数据科学与机器学习框架: - TensorFlow:用于创建和训练机器学习模型的最流行的框架之一。 - PyTorch:深度学习框架,提供灵活性和高性能计算库。 - Scikit-learn:机器学习库,提供了各种经典的机器学习算法。 4. 移动应用开发框架: - Flutter:谷歌开发的跨平台框架,可以同时构建iOS和Android应用。 - React Native:Facebook开发的跨平台框架,利用JavaScript构建原生应用。 此外,还有许多其他领域的框架,例如游戏开发、大数据处理等,你可以根据个人兴趣和职业规划来选择相应的框架进行学习。记住,选择一个适合你需求的框架持续学习和实践是非常重要的。 ### 回答3: 学习C语言的人可以选择学习不同的框架来扩展他们的技能和知识。以下是我推荐学习的几个C语言常见框架。 1. Qt:Qt是一个跨平台的应用程序开发框架,它提供了丰富的功能和工具,能够帮助开发人员快速创建高性能的图形用户界面(GUI)应用程序。Qt具有良好的文档和活跃的社区支持,因此学习Qt将为你提供一种开发跨平台应用程序的强大能力。 2. GTK+:GTK+是另一个流行的C语言GUI编程框架,被广泛应用于Linux和Unix系统。GTK+提供了丰富的界面元素(如按钮、文本框等)和功能组件(如绘图工具、文件对话框等),使开发人员能够设计和创建各种复杂的用户界面。 3. Libevent:Libevent是一个开源的事件通知库,能够提供高效的事件驱动编程模型。使用Libevent,你可以编写具有高度可扩展性和性能的服务器程序,它支持TCP/IP、UDP、SSL等多种网络协议。 4. OpenSSL:OpenSSL是一个开源的密码学库,提供了各种密码学函数和工具,用于数据加密、解密、签名和验证等操作。学习并熟悉OpenSSL可以帮助你了解数据安全和传输的相关概念和技术。 这些框架都具有不同的用途和适用场景,你可以根据自己的兴趣和目标选择学习框架。同时,学习框架的过程也应该结合相关的学习资源,如官方文档、在线教程或参与相关社区的讨论,以帮助你更好地理解和应用框架

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值