一、简介:
Flask是python的一个小型web框架,用熟练后完全可以深入到源码中进行学习。相对于django要轻量级很多。但是小并不意味这功能少,基于最初的设计就是可扩展的框架,因此Flask的很多扩展,很多功能的实现可以基于扩展开发,非常方便。
Flask有两个依赖
1、路由、调试和基于Werkzeug的wsgi服务网关
2、Jinja2模版
werkzeug和jinja2都是由Flask核心开发者开发的
二、安装flask及相关扩展
都是基于源码进行安装 python setup.py install
Flask-0.12.2.tar.gz
Flask-Login-0.4.0.tar.gz
Flask-SQLAlchemy-2.2.tar.gz
Flask-WTF-0.14.2.tar.gz
SQLAlchemy-1.1.12.tar.gz
WTForms-2.1.zip
Jinja2-2.9.6.tar.gz
Werkzeug-0.12.2.tar.gz
MarkupSafe-1.0.tar.gz
Flask-Bootstrap-3.3.7.1.tar.gz
visitor-0.1.3.tar.gz
dominate-2.3.1.tar.gz
Flask-Script-2.0.5.tar.gz
三、路由和视图函数
客户端把请求发送给web服务器,web服务器再把请求发送给Flask程序实例进行处理。程序实例通过一个url到python函数的映射关系(一个map对象),找到url对应的处理函数,即为路由,通过app.route修饰器,进行路由注册!
@app.route('/')
def index():
return '<h1>hello world</h1>'
index函数称为视图函数,视图函数返回的响应可以是简单的html字符串,也可以是复杂的表单
另外url地址支持动态变化,比如 @app.route('/user/<name>') <>括号中的为变化部分,任何能匹配到静态部分的请求,都会把动态部分作为参数传入给函数;
动态部分支持int、float、path三种类型.(path也是字符串,但是不把斜线视作分隔符,而是当中动态片段的一部分) 如: /usr/<int:id>,只会匹配动态片段id为int类型的url请求。
四、启动
最简单的启动
if __name__=='__main__':
app(debug=True)
默认绑定127.0.0.1 5000这个地址。 debug为是否调试。如设置True,实际会创建一个新的线程进行跟踪
还可以同Flask_script进行启动,方便命令行参数的管理。后续再记。
五、第一个flask程序
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World"
if __name__=='__main__':
app.run(debug=True)
在界面通过访问http://ip:port 就可以访问。
注:如果访问有问题,可设置下host参数,默认绑定127.0.0.1会访问不到可以改成实际ip或者0.0.0.0 app.run(host="0.0.0.0",debug=True)