怎样学习flask

怎样彻底学习Flask框架?怎样学习顺序比较合理?

  1. web框架需要快速入门

    ? Web框架是一组工具的集合, 为你的Web应用开发提供了基础环境, 从如何获取参数,到如何返回结果, 从如何获取cookie到如何修改返回的http header。Web框架帮你隐藏了HTTP协议的细节, 你作为一个使用者只需要关心如何实现功能,而不需要底层到底实现的是什么。

  2. Web框架很多, 不同的语言都有自己实现的不同的Web框架. 每一种都有各自不同的实现思路, 有不同的开发哲学, 不管是就换工作换开发栈的需要, 还是学习本身的需要, 快速的多掌握几个框架还是很有必要的.
  3. web框架的工作方式
    1. 现代的Web框架,不管其采用何种设计思想, 开发哲学, 根本的工作模式是相似的,均是从接收HTTP请求,处理HTTP的各项参数,路由到相应的用户实现的处理器上, 再获取返回的结果, 生成HTTP的Response。
    2. 流程图: 
  4. web框架的工作流程
    1. URL路由

      ? 一般来说现在大部分的Web框架对于将HTTP请求交给哪一个逻辑来处理, 是由URL路由框架的模块来决定的. URL路由模块会提供一些函数或者装饰器等方式, 让用户来写一些代码, 将URL和控制器的绑定关系注册到框架中. 大多数的框架都支持在URL路由的定义中使用正则表达式.有的支持在URL中定义参数,框架会自动在URL中将参数截取出来保存在框架的上下文中以供控制器使用.

    2. 控制器

      ? 控制器是用户自己实现的类或者函数, 用来处理HTTP请求, 确切的说是指定URL发来的请求, 并且将业务逻辑的结果返回给框架,有框架去决定如何解析成HTTP的响应数据输出.框架需要给控制器提供HTTP请求的完整上下文环境,那么我们在学习框架使用的时候, 首先就要在文档中整理清楚下面的这些问题:

      1. 如何获取Query String参数?

        ? QueryString是url中?后定义的由&符号分割的key=value形式的参数, 框架会在解析HTTP协议的时候将这个部分的数据转化成比如字典之类的数据结构存起来, 然后提供相应的API去访问.但是QueryString都是只读的, 有一些框架会提供一些工具帮助用户组装URL, 比如Flask提供了url_for用来组装转跳到指定控制器的URL, 方便你在页面上渲染相应的标签

      2. 如何获取Form表单的数据? json?boby ?

        ? POST和PUT方法是HTTP协议中主要的接收数据的语义, 传输数据需要相应的编码方式将数据编码后放在HTTP协议的Body部分. 编码方式现在主要有两种, 一种是最古老的用Form表单编制数据的方式, 另外一种是将数据用json字符串直接放到HTTP协议的body部分. 网页上的应用多数会采用Form表单, 因为这是浏览器对Form表单的默认支持, 而App的后端大多采用JSONString放在body来传数据的方式, 优点是可以传送复杂的数据结构.Web框架会提供相应的API去按照这两种方式获取Body的内容, 但是有的框架会根据header里的content-type来判断是不是可以按照JSON去解析body的内容.

      3. 如何读取和修改cookie?

        ? cookie是浏览器(客户端)在多次请求之间共享数据的一个数据结构, 因为HTTP协议是无状态的,所以cookie在每一次请求的时候都会从浏览器放到HTTP请求中传到服务端, 在服务端生成响应的时候也会写入HTTP响应里传回浏览器. 从而实现了在两次请求之间共享了数据. Web框架会提供对应的API去读取和修改cookie的值, cookie是key-value形式的, 访问的方式应该和字典类似.

      4. 如何获取 headers ?

        ? headers对应到HTTP协议中HTTP请求的头部, 是一个key-value形式的数据格式.headers是HTTP请求的一些额外的描述信息, 比如客户端类型, 字符编码方式, 认证信息等. headers的key是固定的, 你不能自己随便定义一些特殊key, 并且headers部分也是只读的.框架会提供对应API去读取headers.

      5. 如何实现页面转跳 ?

        ? 有些时候在处理完数据后需要通知浏览器转跳到对应的看数据的URL上去, 就需要在文档里找找如何实现页面转跳. 服务端返回给客户端一个HTTP协议中的301或者302的状态, 就可以让浏览器去执行转跳的动作, 作出这样子的HTTP响应在框架中会有对应的API.

      6. 如何输出Http响应 ?

        大多数的Web框架都是用函数(方法)的返回值来作为Http响应的body的, 所以你在很多示例中可以看到 return ‘fu qiang‘ 这样子的写法, 框架会自动把字符串转换成Response的对象再去做编码成Http响应的操作. 针对App的API会比较方便, 输出JSON的字符串就行了. 如果是网站的话, 需要输出HTML页面,有一些框架提供了内置的模板引擎, 用于渲染输出html内容(其实不限html, xml的内容也可以由模板引擎来渲染). 有的框架自己不提供模板引擎, 你可以用你喜欢的模板引擎来渲染.

      7. 流程图如下:

  5. web框架所需的开发环境
    Web框架的开发环境由其实现的语言来决定, 比如说Python的pycharm 和 vscode 等 IDE 集成环境。
  6. web框架一些常用的配置文件

    配置Web框架的一些参数,这需要直接看配置文件或者自定义配置文件

  7. web框架所需要的模版引擎

    ? 前面在控制器的部分提到了模板引擎, 模板引擎主要负责用数据替换模板上的占位符生成最终结果的文本. 工作方式可以简化为下图:

    这里详细的说一下模板引擎部分在学习的时候要注意那一些要点:

    占位符如何定义

    如何定义循环

    如何定义判断条件

    如何对占位符加过滤器

    如何定义继承模板

    如何定义嵌套模板

  8. web框架的中间件或者钩子函数

    ? 中间件是AOP模式统一在每个请求的开始和结束部分注入代码的机制, 最常见的有两个级别的中间件, 一个是Application级别的, 也就是在应用启动和结束的时候执行注入的代码, 另一个是Request级别的, 主要是在每个请求开始和结束的时候执行, 比如统一的鉴权,数据库连接管理(打开,关闭), 统一的错误处理 都可以在这里完成.

  9. 统一的错误处理

    ? 框架是提供了统一错误处理机制的, 当在控制器中发生了没有捕获或者重新抛出的异常的时候, 就会执行到统一错误处理的部分。

  10. 鉴权
    ?		通过cookie或者auth2.0和中间件可以很轻松的实现鉴权和Session机制。
  11. 生产部署的方式

    ? 尽可能的做压力测试, 以至于让你的项目能够正式的上线, 需要了解如何部署生产环境。

原文地址:https://www.cnblogs.com/xiaoyuanquanit/p/11507489.html

时间: 2024-10-31 10:25:55

怎样学习flask的相关文章

python web服务学习——flask

flask是一个使用 Python 编写的轻量级 Web 应用框架.也是开发python web服务最常用的框架之一. 第一步当然是安装flask,依然是pip安装: 学习flask可以从官网的quick start(http://flask.pocoo.org/docs/0.10/quickstart/#hooking-in-wsgi-middlewares)开始,这里有许多的小例子,先看一个最简单的 from flask import Flask app = Flask(__name__)

深入学习Flask框架之视图及路由

在前面一讲中我们学习如何创建一个简单的Flask项目,并做了一些简单的分析.接下来在这一节中就主要来讲讲Flask中最核心的内容之一:Werkzeug工具箱.Werkzeug是一个遵循WSGI协议的Python函数库.WSGI协议在前面的文章中也有提到(点我查看).那Werkzeug有什么作用呢?它其实实现了很多底层的东西,如Request.Response和集成URL请求路由等. 一.Werkzeug的组成: 二.routing模块 routing模块的主要目的是负责实现URL解析.不同的UR

[Flask]学习Flask第三天笔记总结

1 from flask import Flask,render_template,request 2 from others import checkLogin 3 app = Flask(__name__) 4 5 #从templates里引用index.html 6 #return render_template("index.html") 7 @app.route('/') 8 def index(): 9 return '''<form action="/lo

深入学习Flask框架之简单创建一个项目

在前面一篇讲了如何创建一个虚拟环境,今天这一篇就来说说如何创建一个简单的Flask项目.关于Flask的具体介绍就不详细叙述了,我们只要知道它非常简洁.灵活和扩展性强就够了.它不像Django那样集成度特别高.Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用. 一.一个简单的小例子 创建一个Flask项目的步骤: 1.导入Flask类 2.创建程序实例 3.定义视图(函数) 4.启动服务器 1

学习 Flask 扩展 Flask-RESTful

pip install Flask-RESTful Flask-RESTful扩展.首先,我们来安装上面这个扩展. from flask import Flask from flask_restful import Api, Resource, reqparse, abort app = Flask(__name__) api = Api(app) USER_LIST = { 1: {'name':'Michael'}, 2: {'name':'Tom'}, } parser = reqpars

Flask学习-Flask请求处理过程

一.__call__() 在app启动后,一旦uwsgi收到来自web server的请求,就会调用app,其实此时就是调用app的__call__(environ,start_response). flask.py: def __call__(self, environ, start_response): return self.wsgi_app(environ, start_response) 二.wsgi_app() 当http请求从server发送过来的时候,他会启动__call__功能

(搬运以学习)flask 上下文的实现

引言 本文主要梳理了flask的current_app, request, session, g的实现原理 源码说明 本文使用flask 0.5 版本 application context 和request context flask有两个context: application context和request context 这里需要通俗地解释一下application context与request context: application 指的就是当你调用app = Flask(__na

学习Flask时出现的各种Typo错误

看着书敲代码,用了一个小时寻找代码里的typo错误 1."中文引号与英文引号" 2.{% 多一个空格少一个空格的问题% } 3.{& %} 再加上同时打开VS code和pycharm,感觉不完全同步导致改过来改过去的.. pycharm使用jinja2模板需要professional edition,穷买不起,看看VS code有没有类似的东西 原文地址:https://www.cnblogs.com/icetouch/p/8635574.html

flask 学习

最近学习flask框架,是照着图灵丛书<Flask Web开发>来学的. 照着第2章写了个简单的框架 #_*_coding:utf-8 _*_ from flask import Flask app = Flask(__name__) @app.route('/') def index(): return '<h1>hello</h1>' @app.route('/hello') def hello(): return '<h2>hello,there<