Flask
一、Flask简介
1、Flask是一个基于Python开发并且依赖于jinja2模块和Werkzeug WSGI(服务器网管接口 工具)服务的一个微型框架,对于Werkzeug 本质是Socket服务器端,其用于接受HTTP请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回給用户,如果要返回给用户复杂的内容时,需要借助jinja2模版来实现对模版的处理,即:将模版和数据进行渲染,将渲染之后的字符串返回给用户的浏览器。
2、默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。
二、Flask目录结构
flask-demo/
├ run.py # 应用启动程序
├ config.py # 环境配置
├ requirements.txt # 列出应用程序依赖的所有Python包
├ tests/ # 测试代码包
│ ├ __init__.py
│ └ test_*.py # 测试用例
└ myapp/
├ admin/ # 蓝图目录
├ static/
│ ├ css/ # css文件目录
│ ├ img/ # 图片文件目录
│ └ js/ # js文件目录
├ templates/ # 模板文件目录
├ __init__.py
├ forms.py # 存放所有表单,如果多,将其变为一个包
├ models.py # 存放所有数据模型,如果多,将其变为一个包
└ views.py # 存放所有视图函数,如果多,将其变为一个包
三、flask框架
1、简介:轻量级框架
**Django:**无socket、中间件、路由系统、视图(CBV,FBV)、模版、ORM、cookie、Session、Admin、Form、缓存、信号、序列化…
**Flask:**无socket、中间件(扩展)、路由系统、视图(CBV)、第三方模板(jinja2)、cookie、Session
2、Flask依赖一个实现WSGI协议的模块:werkzeug
3、依赖于WSGI模块:wsgiref,werkzeug,wsgi
4、request:
- request.form
- request.args
四、基本使用
1、helloworld
from flask import Flask
app =Flask(__name__)
@app.route('/')
def index():
return '这是首页。。。'
@app.route('/login/')
def login():
return '正在登陆...'
@app.route('/logout/')
def logout():
return '正在退出...'
if __name__ == '__main__':
app.run()
# 运行Flask项目, 默认ip和端口是127.0.0.1:5000
# 如何特色化指定? host='0.0.0.0' 开放本机的所有IP port=5000 端口必须是整形数
# debug=True: 是否开启调试模式, 测试环境中开启, 生产环境一定要关闭.
引用flask文档中的解释
1、首先,我们导入了 Flask 类。这个类的实例将会是我们的 WSGI 应用程序。
2、接下来,我们创建一个该类的实例,第一个参数是应用模块或者包的名称。 如果你使用单一的模块(如本例),你应该使用 name ,因为模块的名称将会因其作为单独应用启动还是作为模块导入而有不同( 也即是 ‘main’ 或实际的导入名)。这是必须的,这样 Flask 才知道到哪去找模板、静态文件等等。详情见 Flask 的文档。
3、然后,我们使用 route() 装饰器告诉 Flask 什么样的URL 能触发我们的函数。
4、这个函数的名字也在生成 URL 时被特定的函数采用,这个函数返回我们想要显示在用户浏览器中的信息。
5、最后我们用 run() 函数来让应用运行在本地服务器上。 其中 if name == ‘main’: 确保服务器只会在该脚本被 Python 解释器直接执行的时候才会运行,而不是作为模块导入的时候。
欲关闭服务器,按Ctrl +C
2、字符串
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello_word():
return '<h1>Hello Word!</h1>'
if __name__=='__main__':
app.run(debug=True)
3、json
from flask import Flask
import json
app=Flask(__name__)
@app.route('/json')
def do_json():
hel