Flask框架简介

常见MVC框架对比讲解

框架 描述
Django 全能框架,学习成本较大
Flask 微框架、易学习、Jinja2模块、内置服务器、扩展丰富、易扩展
Tornado 高性能、异步处理、扩展不多
Bottle 小巧
## Flask框架安装
安装Flask的两种方式:
  • pip install -i https://pypi.douban.com/simple Flask
  • pip install -r requirements.txt

快速体验Flask Hello World

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, I love kevin."



if __name__ == '__main__':
    app.run(host="0.0.0.0", debug=True) #监听整个网卡:0.0.0.0

Flask 为什么可以独立运行

Werkzeug

# -*- coding: utf-8 -*-
from werkzeug.wrappers import Request,Response
class Shortly(object):
    def __call__(self, environ,start_response):
        #start_response( '200 OK',[ ( 'Content-Type','text/plain' ) ] )
        #return [ b'hello world~~' ]
        request = Request( environ )
        text = "hello world, %s"%( request.args.get( 'a','i love mooc' ) )
        response = Response(text,mimetype="text/plain"  )
        return response( environ,start_response )


if __name__ == "__main__":
    from werkzeug.serving import run_simple
    app = Shortly()
    run_simple( '0.0.0.0',5000, app)

CGI FastCGI WSGI UWSGI

CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许 Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。通俗的讲CGI 就像是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。 CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。

FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。

Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出 来以后,许多其它语言中也出现了类似接口。WSGI是作为Web服务器与Web应用程序或应用框架之间的一种低级别的接口,以提升可移植Web应用开发的 共同点。WSGI是基于现存的CGI标准而设计的。

详解 Flask 配置

Flask网络配置

# -*- coding: utf-8 -*-
from flask import Flask

app = Flask( __name__ )

@app.route( "/" )
def hello():
    return "Hello, I Love Imooc"

if __name__ == "__main__":
    app.run( host = "0.0.0.0",debug = True )

变量配置

from flask import Flask

app = Flask(__name__)
app.config['DEBUG'] = True
@app.route("/")
def hello():
    return "Hello, I love kevin."



if __name__ == '__main__':
    app.run(host="0.0.0.0") #监听整个网卡:0.0.0.0

模块配置

在项目的子目录下创建config文件夹,在文件夹里面创建模块文件:base_setting.py

# -*- coding: utf-8 -*-
DEBUG = True
from flask import Flask

app = Flask(__name__)
app.config.from_object("config.base_setting")
@app.route("/")
def hello():
    return "Hello, I love kevin."


if __name__ == '__main__':
    app.run(host="0.0.0.0") #监听整个网卡:0.0.0.0

环境变量配置

设置环境变量的方法:

  • Linux主机:export ops_config = local
  • Windows主机:set ops_config = local
# -*- coding: utf-8 -*-
from flask import Flask

app = Flask( __name__ )
#读取环境变量配置
app.config.from_envvar( "ops_config" )
@app.route( "/" )
def hello():
    return "Hello, I Love Imooc "

if __name__ == "__main__":
    app.run( host = "0.0.0.0" )
    #app.run()

文件配置

# -*- coding: utf-8 -*-
from flask import Flask

app = Flask( __name__ )
app.config.from_pyfile( "config/base_setting.py" )
@app.route( "/" )
def hello():
    return "Hello, I Love Imooc "

if __name__ == "__main__":
    app.run( host = "0.0.0.0" )
    #app.run()