flask简单介绍
- 短小精悍、可扩展性很强的一个web框架
- 第三方组件(WTForms, SQLAlchemy...)http://flask.pocoo.org/extensions/
- 上下文管理机制
- Flask自己没带服务器,依赖于werkzeug(实现wsgi协议)
- Flask模板依赖于jinja2
- 一个web框架包含:(路由、视图(函数,类)、模板)、中间件、session...
flask安装
pip install -i http://pypi.douban.com/simple --trusted-host pypi.douban.com flask
werkzeug简单使用
from werkzeug.wrappers import Response
from werkzeug.serving import run_simple
def run(environ, start_response):
response = Response('Hello')
return response(environ, start_response)
if __name__ == '__main__':
run_simple('localhost', 8000, run)
-------------------------------------------
from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple
@Request.application
def hello(request):
return Response('Hello World!')
if __name__ == '__main__':
run_simple('localhost', 4000, hello)
一个简单的flask hellword(默认监听5000端口)
from functools import wraps
def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
return func(*args, **kwargs)
return inner
# FBV
from flask import Flask
app = Flask(__name__)
@app.route('/index/', methods=['POST', 'GET'])
@wrapper
def index():
return 'Hello World!'
if __name__ == '__main__':
app.run()
# CBV
from flask import Flask, views
app = Flask(__name__)
class IndexView(views.MethodView):
methods = ['GET', 'POST']
decorators = [wrapper]
def get(self, *args, **kwargs):
return 'GET'
def post(self, *args, **kwargs):
return 'POST'
app.add_url_rule('/', None, IndexView.as_view('IndexView'))
if __name__ == '__main__':
app.run()