欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  Flask是一个基于Python实现的web开发的'微'框架
 
  中文文档地址
 
  Flask和Django一样,也是一个基于MVC设计模式的Web框架
 
  flask流行的主要原因:
 
  2.1虚拟环境搭建
 
  2.2 安装
 
  创建hello.py文件
 
  运行:python hello.py
 
  3.1 初始化
 
  Flask类构造函数唯一需要的参数就是应用程序的主模块或包。对于大多数应用程序,Python的__name__变量就是那个正确的、你需要传递的值。Flask使用这个参数来确定应用程序的根目录,这样以后可以相对这个路径来找到资源文件。
 
  3.2 路由
 
  客户端例如web浏览器发送 请求 给web服务,进而将它们发送给Flask应用程序实例。应用程序实例需要知道对于各个URL请求需要运行哪些代码,所以它给Python函数建立了一个URLs映射。这些在URL和函数之间建立联系的操作被称之为 路由 。
 
  在Flask应程序中定义路由的最便捷的方式是通过显示定义在应用程序实例之上的app.route装饰器,注册被装饰的函数来作为一个路由。
 
  3.3 视图函数
 
  在上一个示例给应用程序的根URL注册gello_world()函数作为事件的处理程序。如果这个应用程序被部署在服务器上并绑定了  域名,然后在你的浏览器地址栏中输入  将触发gello_world()来运行服务。客户端接收到的这个函数的返回值被称为 响应 。如果客户端是web浏览器,响应则是显示给用户的文档。
 
  类似于gello_world()的函数被称作 视图函数 。
 
  3.4 动态名称组件路由
 
  你的Facebook个人信息页的URL是 <username> ,所以你的用户名是它的一部分。Flask在路由装饰器中使用特殊的语法支持这些类型的URLs。下面的示例定义了一个拥有动态名称组件的路由:
 
  用尖括号括起来的部分是动态的部分,所以任何URLs匹配到静态部分都将映射到这个路由。当视图函数被调用,Flask发送动态组件作为一个参数。在前面的示例的视图函数中,这个参数是用于生成一个个性的问候作为响应。
 
  在路由中动态组件默认为字符串,但是可以定义为其他类型。例如,路由/user/<int:id>只匹配有一个整数在id动态段的URLs。Flask路由支持int、float、string、path
 
  路由匹配的规则
 
  1.<id> :默认接受的类型是str
 
  2.<string:id> :指定id的类型为str
 
  3.<int:id> :指定的id类型是整性
 
  4.<float:id> : 指定id的类型为浮点数(四舍五入,且不能接收整数类型)
 
  5.<path:path1> : 指定接收的path为url中的路径
 
  如下:
 
  3.5 服务启动
 
  注意: __name__=='__main__'在此处使用是用于确保web服务已经启动当脚本被立即执行。当脚本被另一个脚本导入,它被看做父脚本将启动不同的服务,所以app.run()调用会被跳过。
 
  一旦服务启动,它将进入循环等待请求并为之服务。这个循环持续到应用程序停止,例如通过按下Ctrl-C。
 
  有几个选项参数可以给app.run()配置web服务的操作模式。在开发期间,可以很方便的开启debug模式,将激活 debugger 和 reloader 。这样做是通过传递debug为True来实现的。
 
  run()中参数有如下:
 
  4.1 安装插件
 
  调整代码
 
  manager=Manager(app=‘自定义的flask对象’)
 
  启动的地方
 
  manager.run()
 
  4.2 启动命令
 
  其中:-h表示地址。-p表示端口。-d表示debug模式。-r表示自动重启
 
  5.1 规则
 
  写法:<converter:variable_name>
 
  converter类型:
 
  例子:
 
  实现对应的视图函数:
 
  5.2 methods请求方法
 
  常用的请求类型有如下几种
 
  定义url的请求类型:
 
  在Flask项目中可以用Blueprint(蓝图)实现模块化的应用,使用蓝图可以让应用层次更清晰,开发者更容易去维护和开发项目。蓝图将作用于相同的URL前缀的请求地址,将具有相同前缀的请求都放在一个模块中,这样查找问题,一看路由就很快的可以找到对应的视图,并解决问题了。
 
  2.1 安装
 
  2.2 实例化蓝图应用
 
  注意:Blueprint中传入了两个参数,第一个是蓝图的名称,第二个是蓝图所在的包或模块,_ name _代表当前模块名或者包名
 
  2.3 注册
 
  注意:第一个参数即我们定义初始化定义的蓝图对象,第二个参数url_prefix表示该蓝图下,所有的url请求必须以/user开始。这样对一个模块的url可以很好的进行统一管理
 
  3 使用蓝图
 
  修改视图上的装饰器,修改为@blue.router(‘/’)
 
  注意:该方法对应的url为127.0.0.1:5000/user/
 
  4 url_for反向解析
 
  语法:
 
  定义跳转:
 
  服务端在接收到客户端的请求后,会自动创建Request对象
 
  由Flask框架创建,Requesy对象不可修改
 
  属性:
 
  1.1 args-->GET请求参数包装
 
  a)args是get请求参数的包装,args是一个ImmutableMultiDict对象,类字典结构对象
 
  b)数据存储也是key-value
 
  1.2 form-->POST请求参数包装
 
  a)form是post请求参数的包装,args是一个ImmutableMultiDict对象,类字典结构对象
 
  b)数据存储也是key-value
 
  重点:ImmutableMultiDict是类似字典的数据结构,但是与字典的区别是,<font style="color:red; font-weight:bold;">可以存在相同的键</font>。
 
  在ImmutableMultiDict中获取数据的方式,dict['key']或者dict.get('key')或者dict.getlist('key')
 
  image.png
 
  Response是由开发者自己创建的
 
  创建方法:
 
  状态码:
 
  格式:make_reponse(data,code),其中data是返回的数据内容,code是状态码
 
  例子1:
 
  定义一个获取GET请求的request的方法,并将返回成功的请求的状态码修改为200
 
  例子2:
 
  返回response响应,并添加返回结果的状态码200
 
  或者:
 
  例子1:
 
  定义跳转方法,跳转到get_response的方法上
 
  例子2:
 
  使用url_for反向解析
 
  自动抛出异常:abort(状态码)
 
  捕获异常处理:errorhandler(状态码),定义的函数中要包含一个参数,用于接收异常信息

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h61030.shtml