内容,Flask框架
1、介绍Flask,Django,Tornado 框架
Django:重量级web框架,内部包含非常多的组件,例如:ORM,Form,ModelForm,缓存,Session,中间件,信号等
Flask:轻量级web框架,内部没有太多组件,但是第三方组件非常丰富。网址https://dormousehole.readthedocs.io/en/latest/
Troando:异步非阻塞框架(Node.js)
2、Flask安装
a, 命令:pip install flask
b,werkzeug实现
示例:
from werkzeug.wrappers import Request,Response
@Request.application
def hello(request):
return Response('Hello World!')
if __name__ =='__main__':
from werkzeug.serving import run_simple
run_simple('localhost',4000,hello)
c,wsgiref示例
from wsgiref.simple_server import make_server
def
runserver(environ,start_response):
start_response('200 ok',[('Content-Type','text/html')]
return [bytes('
Hello,web|
',encoding='utf-8')]if __name__ == '__main__':
httpd = make_server(' ',8000,runserver)
httpd.server_forever()
上述通过wsgiref,和werkzeug都可以创建一个Hello World页面
其实他们的本质也就是相当于socket创建,
如下所示:
import socket
def handle_request(client):
buf = client.recv(1024)
client.send("HTTP/1.1 200 OK\r\n\r\n")
client.send('Hello,Seven')
def main():
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(('localhost',8000))
sock.listen(5)
while True:
connection,address = sock.accept()
handle_request(connection)
connection.close()
if __name__ == '__main__':
main()
2,Flask 创建
from flask import Flask
app = Flask(__name__)
#创建路由
@app.route('/')
def hello _world():
return 'Hello World'
if __name__ == '__main__':
app.run()
讨论:
a、Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器
b、“微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以 ),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。
c、默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。