1.web预备知识
2.flask介绍
3.web框架的本质及分类
4.flask安装与基本设置
1.web预备知识
HTTP协议:https://www.cnblogs.com/wyb666/p/9383077.html
关于web的本质:http://www.cnblogs.com/wyb666/p/9034042.html
如何自定义web框架:http://www.cnblogs.com/wyb666/p/9038644.html
了解cookie和session:https://www.cnblogs.com/wyb666/p/9068853.html
2.flask介绍
(1)flask介绍
Python的WEB框架有Django、Tornado、Flask 等多种
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。
“微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以 ),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。
默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 from werkzeug.wrappers import Request, Response 2 3 @Request.application 4 def hello(request): 5 return Response('Hello World!') 6 7 if __name__ == '__main__': 8 from werkzeug.serving import run_simple 9 run_simple('localhost', 4000, hello)
(2)MVC
MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。其中:
- M——管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)
- C——接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带
- V——负责把数据格式化后呈现给用户
(3)flask的优点
- 极大的定制与扩展灵活
- ORM、模板等海量第三方扩展
- Flask比Django更加Pythonic,与Python的philosophy更加吻合
(4)flask的组件
flask是短小精悍的一个web框架,内部没有太多组件。第三方组件非常丰富:
- flask-sqlalchemy -> ORM
- flask-script -> 为在Flask里编写额外的脚本提供了支持
- flask-migrate -> 为Flask应用处理SQLAlchemy数据库迁移的扩展,使得可以通过Flask的命令行接口或者Flask-Scripts对数据库进行操作
- flask-bootstrap -> 是包含了Bootstrap框架的扩展,安装Flask-Bootstrap之后,就可以在程序中集成Bootstrap
- flask-moment -> 本地化时间和日期
- flask-wtf -> 简化表单处理、防跨站请求伪造(CSRF)攻击
- 、、、
注:更多第三方组件见:http://flask.pocoo.org/extensions/
3.web框架的本质及分类
(1)web框架的本质:socket服务端 与 浏览器的通信
(2)socket服务端功能划分
- 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn...
- 根据用户访问不同的路径执行不同的函数
- 从HTML读取出内容,并且完成字符串的替换 --> jinja2(模板语言)
(3)Python中 Web框架的分类
按上面三个功能划分:
- 框架自带a,b,c --> Tornado
- 框架自带b和c,使用第三方的a --> Django
- 框架自带b,使用第三方的a和c --> Flask
按另一个维度来划分:
- Django --> 大而全(你做一个网站能用到的它都有)
- 其他 --> Flask 轻量级
4.flask安装与基本设置
(1)flask安装
1 pip3 install flask
注意:
1 在linux服务器上可能没有自带pip3 2 所以要自己去安装pip3,安装方法如下: 3 apt-get install python3-pip
(2)创建flask项目
使用pycharm(专业版)创建:File --> New project --> 左侧选flask--> 右侧填项目路径,并且勾选python.exe
自己创建: 创建一个普通项目 -> 在这个项目里自己搭flask的框架
关于flask的框架,可以根据项目需求和自己掌握的东西来选择组件,但是最基本的就是以下的东西:
(3)设置flask项目
flask项目的设置有很多方法,可以设置在单独的文件中,也可以直接写在字典中然后传给app.run方法
以后者为例,以下是最基本的设置:
1 # 运行服务器 2 if __name__ == '__main__': 3 # debug 模式可以自动加载你对代码的变动, 所以不用重启程序 4 # host 参数指定为 '0.0.0.0' 可以让别的机器访问你的代码 5 # host 参数指定为 'localhost' 实际上是使用本机回环地址127.0.0.1 6 # 127.0.0.1 一般是用来进行本地测试和开发的 7 # port指定端口 端口是这个网站被别人访问的入口 8 # 有了IP+端口 别人才能真正访问一个网站 9 config = dict( 10 debug=True, 11 host='localhost', 12 port=2000, 13 ) 14 app.run(**config) 15 # app.run() 开始运行服务器 16 # 访问下面的网址就可以打开网站: 17 # http://127.0.0.1:2000/