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框架预备知识的更多相关文章

  1. django框架预备知识

    内容: 1.web预备知识 2.django介绍 3.web框架的本质及分类 4.django安装与基本设置 1.web预备知识 HTTP协议:https://www.cnblogs.com/wyb6 ...

  2. Python——Flask框架

    Flask框架相关知识构架 程序的基本结构 模板 Web表单 数据库 电子邮件 程序的结构 用户认证

  3. BBS - 预备知识

    一.中介模型 四个项目: 苑昊 博客(BBS) (7-8) CRM 1.权限组件 (3) 2.start组件 -- admin (5) 1.使用 2.源码 django 源码 (面向对象) 以源码为导 ...

  4. 学习Identity Server 4的预备知识

    我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...

  5. 学习Identity Server 4的预备知识 (误删, 重补)

    我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...

  6. Flask框架从入门到实战

    Flask简介: Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 WerkzeugWSGI工具箱和 Jinja2模板引擎.使用 BSD 授权. Flask也被称为 " ...

  7. 自动化预备知识上&&下--Android自动化测试学习历程

    章节:自动化基础篇——自动化预备知识上&&下 主要讲解内容及笔记: 一.需要具备的能力: 测试一年,编程一年,熟悉并掌握业界自动化测试工具(monkey--压力测试.monkeyrun ...

  8. 1 预备知识--Hadoop简介

    1 预备知识--Hadoop简介 Hadoop是Apache的一个开源的分布式计算平台,以HDFS分布式文件系统和MapReduce分布式计算框架为核心,为用户提供了一套底层透明的分布式基础设施Had ...

  9. LayIM.AspNetCore Middleware 开发日记(二)预备知识介绍

    前言 开发一个AspNetCore的中间件需要理解RequestDelegate.另外,还需要理解.NET Core中的依赖注入.还有一个就是内嵌资源的访问.例如:EmbeddedFileProvid ...

随机推荐

  1. iPhone/iPad被停用怎么办 3招轻松解锁

    家中小孩玩电脑游戏,自己拿了iPad,随便输入密码,结果造成平板电脑无法使用,相信这是许多家长都将面对或是早已发生的事情.本文整理当iPhone或是iPad被停用时的处理方法. iPhone被停用 为 ...

  2. Unity3D插件-自制小插件、简化代码便于使用(新手至高手进阶必经之路)

    Unity3D插件-简化代码.封装功能 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 FindT() ...

  3. 国内Ubuntu镜像源

    国内有很多Ubuntu的镜像源,包括阿里的.网易的,还有很多教育网的源,比如:清华源.中科大源. 我们这里以中科大的源为例讲解如何修改Ubuntu 18.04里面默认的源. 编辑/etc/apt/so ...

  4. SQL Server常用SQL集合

    ================================================ 1.SQL查询一年之内的数据记录 select * from 表名 where CreateDate& ...

  5. (2)字符编码关系和转换(bytes类型)

    ASCII 占一个字节,只支持英文 GB2312 占2个字节,只支持6700+汉字 GBK 是GB2312的升级版,支持21000+汉字 Shift-JIS 日本字符编码 ks_c-5601-1987 ...

  6. Python类之魔术方法

    一.什么是魔术方法? 在Python的方法,我们经常会遇见__XXX__(),这样的方法,我们一般称为"魔术方法",赶紧搬个小板凳,我们一起来看看魔术方法有啥神奇的地方,这些方法又 ...

  7. ubuntu18.04虚拟机突然不能上网问题解决办法

    周末在家啃书学docker,win10上装的虚拟机,ubuntu18.04,突然执行apt-get update报错,域名无法解析,怀疑是dns文件有问题,折腾了很久,各种百度,修改dns文件,仍然报 ...

  8. JSON字符串-赋张最初接触后台从map转json的方法

    **************************************** json数组: *************************************************** ...

  9. 实战:mysql检查物理磁盘中的二进制日志文件是否有丢失

    版权声明:日常札记,乐于分享 https://blog.csdn.net/yangzhawen/article/details/32103555 场景:有时候由于磁盘损坏或人为原因错误删除了磁盘中的二 ...

  10. Digester库使用总结

    1.Digester是Apache软件基金会的Jakarta项目下的子Commons项目下的一个开源项目,Digester API包含3个包:org.apache.commons.digester,提 ...