Flask基础

123 阅读3分钟

所有Flask程序必须有一个程序实例。

Flask调用视图函数后,会将视图函数的返回值作为响应的内容,返回给客户端。一般情况下,响应内容主要是字符串和状态码。

用户向浏览器发送http请求,web服务器把客户端所有请求交给Flask程序实例,程序用Werkzeug来做路由分发,每个url请求,找到具体的视图函数。路由的实现是通过route装饰器实现的,调用视图函数,获取数据后,把数据传入模块中,模块引擎渲染响应的数据,由Flask返回给浏览器。

flask渲染模板为jinja2,调用为render_template('xxx.html')

from flask import Flask  # 从flask包中导入Flask类

app = Flask(__name__)  # 使用Flask类创建app对象
# __name__:代表当前app.py这个模块
# 作用
# 1 .以后出现bug,可以帮助我们快速定位
# 2.对于寻找模板文件,有一个相对路径
1. debug模式;
# 1.1 开启debug模式后,只要修改代码后保存,就会自动重新加载,不需要手动重启项目
# 1.2 如果开发的时候,出现bug,如果开启了debug模式,在浏览器上就可以看到出错信息

# 2. 修改host:主机名----127.0.0.1
# 主要作用:让其他电脑能访问到我电脑上的flask项目,把host修改为本机ip地址或者0.0.0.0
# 127.0.0.1 是本地环回地址,专供自己访问自己,速度快,别名为localhost

# 3. 修改port端口号:
# 主要作用:如果5000端口被其他程序占用,那么可以通过修改port来监听的端口号
# 创建一个路由和视图函数的映射,/表示根路由

@app.route('/')
def hello_world():
    return 'Hello 22222!'
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--方法 ; 把地址写成 {{ url_for('static',filename='xxxxx.xxx') }}    -->
    <!--加载css-->
    <link rel="stylesheet" href="{{url_for('static',filename='css/style.css')}}">

    <!--加载js-->
    <script src="{{url_for('static',filename='js/my.js')}}"></script>
</head>
<body>

<!--加载图片-->
<img src="{{ url_for("static", filename="images/test.jpg") }}" alt="">
</body>
</html>

Flask是一个web框架,而且Flask是基于werkzeug开发的

Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下, werkzeug 不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个 WSGI 工具包,它可以作为一个 Web 框架的底层库,因为它封装好了很多 Web 框架的东西,例如 Request,Response 等等。使用它可以减轻web框架开发工作量。我看过werkzeug的源码后发现,werkzeug也实现了WSGI容器的功能,而且利用python/http/server.py库实现了一个简易的http服务器。因此在调试的时候可以直接使用app.run()把服务器给运行起来。

Flask数据库:

Web应用中普遍使用的是关系模型的数据库,关系型数据库把所有的数据都存储在表中,表用来给应用的实体建模,表的列数是固定的,行数是可变的。它使用结构化的查询语言。关系型数据库的列定义了表中表示的实体的数据属性。比如:商品表里有name、price、number等。

Flask本身不限定数据库的选择,你可以选择SQL或NOSQL的任何一种。也可以选择更方便的SQLALchemy,类似于Django的ORM。SQLALchemy实际上是对数据库的抽象,让开发者不用直接和数据库打交道,而是通过Python对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升。

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


使用Flask:

  1. 导入falsk.Flask类
  2. 实例化一个Flask对象
  3. 绑定路由
  4. 运行flask应用

运行Flask程序:

在flask框架中,路由表示用户请求的URL找出其对应的处理函数
常见路由的规则

  1. url的一部分可以标记为变量<变量名>
  2. flask中路由里面的变量常见类型: int,string,float,path,uuid