Python Flask笔记(一)
HDUZN

一、Flask简介

Flask诞生于2010年,是用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。

Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login) ,都需要用第三方方的扩展来实现。

其WSGI 工具箱采用 Werkzeug (路由模块),模板引擎则使用Jinja2。这两个也是Flask框架的核心。

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

Flask常用扩展包:

  • Flask-SQLalchemy:操作数据库;
  • Flask-migrate:管理迁移数据库;
  • Flask-Mail:邮件;
  • Flask-WTF:表单;
  • Flask-Bable:提供国际化和本地化支持,翻译;
  • Flask-script:插入脚本;
  • Flask-Login:认证用户状态;
  • Flask-OpenID:认证;
  • Flask-RESTful:开发RESTAPI的工具;
  • Flask-Bootstrap:集成前端Twitter Bootstrap框架;
  • Flask-Moment:本地化日期和时间;
  • Flask-Admin:简单而可扩展的管理接口的框架

扩展列表:http://flask.pocoo.org/extensions/
1.中文文档(http://docs.jinkan.org/docs/flask/)
2.英文文档(http://flask.pocoo.org/docs/0.12/

Flask基础扩展包

一般写个最简单的web站点,我就装个操作表单的Flask-WTF和操作myql数据库的Flask-SQLalchemy就差不多够用了。

二、安装Flask

一般我用虚拟环境安装Flask,可以避免包的混乱和版本的冲突,也不会影响系统中安装的全局Python解释器比较方便。

使用虚拟环境的笔记:VSCode运行Python虚拟环境virtualenv

1.安装Flask

1
2
pip install flask
pip install flask==2.2.2 # 指定Flask版本安装

测试安装是否成功,以代码中加入以下代码,或者直接在ipython中输入后测试:

1
from flask import Flask

2.第一个Flask程序

Flask程序运行过程

  • 当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。
  • 此时,Web服务器会把来自客户端的所有请求都交给Flask程序实例。
  • 程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。
  • 根据每个URL请求,找到具体的视图函数并进行调用。
  • 在Flask程序中,路由的实现一般是通过程序实例的装饰器实现。
  • Flask调用视图函数后,可以返回两种内容:
    • 字符串内容:将视图函数的返回值作为响应的内容,返回给客户端(浏览器)
    • HTML模版内容:获取到数据后,把数据传入HTML模板文件中,模板引擎负责渲染HTTP响应政据,然后返回响应数据给客户端(浏览器)

代码示例

创建个项目目录,在目录下创建一个app.py文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1.导入Flask扩展
from flask import Flask

# 2.创建Flask应用程序实例
# 需要传入__name__,作用是为了确定资源所在的路径
app = Flask(__name__)

# 3.定义路由及视图函数
# Flask中定义路由是通过装饰器实现的
@app.route('/')
def index():
return "hello flask"

# 4.启动程序
if __name__ == '__main__':
# 执行了app.run 就会将Flask程序运行在一个简易的服务器(Flask提供的,用于测试的)
app.run()

运行后会有网址:当前本机的ip地址(局域网ip):端口号(默认5000)

三、安装其它基础扩展包

1.web表单:安装Flask-WTF扩展

web表单是web应用程序的基本功能。

它是HTML页面中负责数据采集的部件。
表单有三个部分组成∶表单标签、表单域、表单按钮。
表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。

在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能。
安装:

1
pip install Flask-WTF

2.mysql数据库:安装flask-sqlalchemy

SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和SQL语句打交道,而是通过Python对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升

SQLAlchemy 是一个关系型数据库框架,它提供了高层的ORM和底层的原生数据库的操作。flask-sqlalchemy是一个简化了SQLAlchemy操作的flask扩展。

1
2
3
4
5
pip install flask-sqlalchemy

pip install flask-mysqldb # 如果连接的是mysql数据库,需要安装mysqldb

pip install pymysql # 还没装pymysql的,也需要安装上

flask-mysqldb 如果安装失败,提示需要mysql client的话。
用以下方法安装:

1
2
3
4
Linux(Ubuntu)用命令安装(安装完client再安装就可以了):
sudo apt-get install mysql-server //服务端
sudo apt-get install mysql-client //客户端
sudo apt-get install libmysqlclient-dev //程序编译时链接的库

Windows的话,去 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python 网址下载Mysqlclient对应的whl文件。
然后用pip install mysqlclient-1.3.13-cp34-cp34m-win_amd64.whl 命令安装。

PS.关于这两拓展的具体使用,后面会写更详细的笔记。

3.requirements.txt文件

安装完后,在虚拟环境中,所以可以用pip freeze > requirements.txt命令生成requirements.txt文件,看一下已经安装的包有哪些,比如我这有这些:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
click==8.1.3
colorama==0.4.5
Flask==2.2.2
Flask-MySQLdb==1.0.1
Flask-SQLAlchemy==2.5.1
Flask-WTF==1.0.1
greenlet==1.1.3
importlib-metadata==4.12.0
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.1
mysqlclient==2.1.1
PyMySQL==1.0.2
SQLAlchemy==1.4.41
Werkzeug==2.2.2
WTForms==3.0.1
zipp==3.8.1
  • 本文标题:Python Flask笔记(一)
  • 本文作者:HDUZN
  • 创建时间:2022-09-20 21:25:02
  • 本文链接:http://hduzn.cn/2022/09/20/Python-Flask笔记(一)/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论