快速上手Flask(一) 认识框架Flask、项目结构、开发环境

快速上手Flask(一) 认识框架Flask、项目结构、开发环境

Web开发轻量级框架Flask

github: https://github.com/pallets/flask
官网: https://flask.palletsprojects.com/en/2.1.x/
官方文档:https://flask.net.cn/installation.html#installation

Python最出名的框架要数Django,此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。

Flask是一个相对于Django而言轻量级的Web框架。

Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是Flask框架的核心。

扩展列表:http://flask.pocoo.org/extensions/

Flask is a web framework for Python, based on the Werkzeug toolkit.

Flash历史和团队

flask的诞生于2010年的愚人节,本来它只是作者无意间写的一个小玩具,没想到它却悄悄流行起来了。漫长的8年时间,flask一直没有发布一个严肃的正式版本,但是却不能阻挡它成了github上最受好评的Python Web框架。

flask内核内置了两个最重要的组件,所有其它的组件都是通过易扩展的插件系统集成进来的。这两个内置的组件分别是werkzeug和jinja2。

Pallets 项目

官方:https://palletsprojects.com/

The Pallets Projects are a collection of Python web development libraries that are associated with the Flask microframework as originally developed by Armin Ronacher. Today the Pallets Projects are a community-driven organization with the goal to maintain and improve these libraries.

Pallets 项目是Python Web开发库的集合,这些库与Armin Ronacher最初开发的Flask 框架相关。如今,Pallets 项目是一个由社区驱动的组织,其目标是维护和改善这些库。

Pocoo团队的成员来自Python社区,统一以Pocoo的名义参与多个Python库和应用的开发工作。团队由Georg Brandl和Armin Ronacher领导。

Pocoo团队开发了许多广受欢迎的项目,其中包括:

  • Flask微网络开发框架
  • Jinja2模板引擎
  • Pygments语法高亮包
  • Sphinx文档处理器
  • Werzeug WSGI工具集

在这里插入图片描述

flask运行过程

django与flask都是实现了WSGI协议
flask用的werkzeug来wsgi进行了封装,werkzeug是用run_simple(‘localhost’, 4000, hello) 第一个是ip,第二个是项目启动端口,第三个是可执行对象,当请求wsgi,就会调用第三个参数

Web服务器会把来自客户端的所有请求都交给Flask程序实例。
程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。
根据每个URL请求,找到具体的视图函数并进行调用。
Flask调用视图函数后,可以返回两种内容:

  • 字符串内容:将视图函数的返回值作为响应的内容,返回给客户端(浏览器)。
  • HTML模版内容:获取到数据后,把数据传入HTML模板文件中,模板引擎负责渲染HTTP响应数据,然后返回响应数据给客户端(浏览器)。

使用flask的场景

它主要面向需求简单,项目周期短的小应用。Flask入门非常的简单,并可以通过扩展来增加其他的功能。

使用PyCharm快速创建一个Flask项目

如何使用PyCharm快速创建一个Flask项目
参考URL: https://blog.csdn.net/xili1342/article/details/125610684

1)创建一个新的Flask项目
File–>New Project 选择flask:
在这里插入图片描述

创建的文件夹里有自动包含以下:
刚起步的时候 Flask 有许多带有合理缺省值的配置值和惯例。按照惯例, 模板和静态文件存放在应用的 Python 源代码树的子目录中,名称分别为 templates 和 static 。
static目录:静态文件
templates目录:模板
venv目录: 虚拟Python环境,在虚拟环境里用pip安装的包都会安装到当前的虚拟环境中
app.py文件:
在这里插入图片描述

一个最小的应用app.py

from flask import Flask

# Flask函数接收一个参数name,它会指向程序所在的模块
app = Flask(__name__)

#装饰器的作用是将路由映射到视图函数
@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    # Flask应用程序实例的run方法启动WEB服务器
    app.run()
  1. 首先我们导入了 Flask 类。 该类的实例将会成为我们的 WSGI 应用。

  2. 接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。如果你使用 一个单一模块(就像本例),那么应当使用 name ,因为名称会根据这个 模块是按应用方式使用还是作为一个模块导入而发生变化(可能是 ‘main’ , 也可能是实际导入的名称)。这个参数是必需的,这样 Flask 才能知道在哪里可以 找到模板和静态文件等东西。 更多内容详见 Flask 文档

  3. 然后我们使用 route() 装饰器来告诉 Flask 触发函数的 URL 。

  4. 函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息。

2)项目启动

Pycharm 点击run运行
在这里插入图片描述
使用命令行运行app.py

python app.py

使用flask命令运行
现在通过设定环境变量 FLASK_APP=app.py 来表示将要运行的应用是哪个,然后运行 flask run 来启动该应用。

flask run

指定IP及端口:

flask run --host=0.0.0.0 --port= 8001

或:

flask run -h 0.0.0.0 -p 8001

猜你喜欢

转载自blog.csdn.net/inthat/article/details/125998033