flask框架预备知识
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 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。
from werkzeug.wrappers import Request, Response @Request.application
def hello(request):
return Response('Hello World!') if __name__ == '__main__':
from werkzeug.serving import run_simple
run_simple('localhost', 4000, hello)
werkzeug实例
(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安装
pip3 install flask
注意:
在linux服务器上可能没有自带pip3
所以要自己去安装pip3,安装方法如下:
apt-get install python3-pip
(2)创建flask项目
使用pycharm(专业版)创建:File --> New project --> 左侧选flask--> 右侧填项目路径,并且勾选python.exe
自己创建: 创建一个普通项目 -> 在这个项目里自己搭flask的框架
关于flask的框架,可以根据项目需求和自己掌握的东西来选择组件,但是最基本的就是以下的东西:

(3)设置flask项目
flask项目的设置有很多方法,可以设置在单独的文件中,也可以直接写在字典中然后传给app.run方法
以后者为例,以下是最基本的设置:
# 运行服务器
if __name__ == '__main__':
# debug 模式可以自动加载你对代码的变动, 所以不用重启程序
# host 参数指定为 '0.0.0.0' 可以让别的机器访问你的代码
# host 参数指定为 'localhost' 实际上是使用本机回环地址127.0.0.1
# 127.0.0.1 一般是用来进行本地测试和开发的
# port指定端口 端口是这个网站被别人访问的入口
# 有了IP+端口 别人才能真正访问一个网站
config = dict(
debug=True,
host='localhost',
port=2000,
)
app.run(**config)
# app.run() 开始运行服务器
# 访问下面的网址就可以打开网站:
# http://127.0.0.1:2000/
flask框架预备知识的更多相关文章
- django框架预备知识
内容: 1.web预备知识 2.django介绍 3.web框架的本质及分类 4.django安装与基本设置 1.web预备知识 HTTP协议:https://www.cnblogs.com/wyb6 ...
- Python——Flask框架
Flask框架相关知识构架 程序的基本结构 模板 Web表单 数据库 电子邮件 程序的结构 用户认证
- BBS - 预备知识
一.中介模型 四个项目: 苑昊 博客(BBS) (7-8) CRM 1.权限组件 (3) 2.start组件 -- admin (5) 1.使用 2.源码 django 源码 (面向对象) 以源码为导 ...
- 学习Identity Server 4的预备知识
我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...
- 学习Identity Server 4的预备知识 (误删, 重补)
我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...
- Flask框架从入门到实战
Flask简介: Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 WerkzeugWSGI工具箱和 Jinja2模板引擎.使用 BSD 授权. Flask也被称为 " ...
- 自动化预备知识上&&下--Android自动化测试学习历程
章节:自动化基础篇——自动化预备知识上&&下 主要讲解内容及笔记: 一.需要具备的能力: 测试一年,编程一年,熟悉并掌握业界自动化测试工具(monkey--压力测试.monkeyrun ...
- 1 预备知识--Hadoop简介
1 预备知识--Hadoop简介 Hadoop是Apache的一个开源的分布式计算平台,以HDFS分布式文件系统和MapReduce分布式计算框架为核心,为用户提供了一套底层透明的分布式基础设施Had ...
- LayIM.AspNetCore Middleware 开发日记(二)预备知识介绍
前言 开发一个AspNetCore的中间件需要理解RequestDelegate.另外,还需要理解.NET Core中的依赖注入.还有一个就是内嵌资源的访问.例如:EmbeddedFileProvid ...
随机推荐
- STM32 LSM6DSL 陀螺仪数据采集
/************************************************************************************ * STM32 LSM6DS ...
- ULINK2配置
先要安装ULINK2的驱动 如果还没有检测到驱动的话,下个驱动人生,应该就行了.反正我就是这样弄成的^-^. 然后就是配置了 这样就可以下载了.
- zookeeper 入门指导
zookeeper数据模型 zookeeper有一个层级命名空间,和一个分布式文件系统非常相似 .唯一的不同是每个节点可以有关联的数据,子节点也是.就像有一个文件系统,并且允许文件可以是一个目录. ...
- ElasticSearch(九):springboot项目集成消息中间件activeMQ
目的:为了将elasticsearch做成单独的服务,那么我们必须解耦,也就是业务逻辑和搜索模块是没有关系的,并且是异步的.那么项目之间通信,使用的选择有限,消息中间件是一个不错的选择. 消息中间件常 ...
- int? 竟然真的可以是 null!.NET/C# 确定可空值类型 Nullable 实例的真实类型
使用 Nullable<T> 我们可以为原本不可能为 null 的值类型像引用类型那样提供一个 null 值.不过注意:Nullable<T> 本身也是个 struct,是个值 ...
- 使用slot编写弹窗组件
具体slot用法详见http://www.cnblogs.com/keepfool/p/5637834.html html: <!--测试弹窗--> <dialog-test v-i ...
- WPF 多线程异常抛送到UI线程
无论是winform还是WPF,在.NET 2.0之后 只要是多线程中产生了异常都会导致程序强制结束. 那么我们一般的做法是将未知的多线程的异常抛送到UI线程去,然后进行处理.. 正确的多线程中的异常 ...
- grandstack graphql 开发模型
当前grandstack 支持两类开发方式 js (使用Neo4j-graphql-js) 插件模型 js 模型 参考https://github.com/rongfengliang/grand-st ...
- 虚拟机中的CentOS 7设置固定IP连接最理想的配置
说明:在网上搜了好多文章都是大同小异,都没有完全解决我想要的固定IP后要达到的如下效果, 1.笔记本主机IP为设置自动获取,不管什么情况下,不受虚拟机影响,只要连接外网就可以正常上网: 2.只要笔记本 ...
- 关于发现宇宙微波背景(CMB)辐射的一则趣闻
请看下图: 上图是发现宇宙存在微波背景(CMB)的样子有点怪异的射电望远镜(口径5米,即Holmdel horn antenna天线).该天线具有较好的抗干扰的性能, ...