python之Flask(一)

来源:互联网 发布:淘宝led散热片 编辑:程序博客网 时间:2024/06/05 16:44

一、简介:

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)