06 flask源码剖析之路由加载
06 Flask源码之:路由加载
1.示例代码
from flask import Flask
app = Flask(__name__,static_url_path='/xx')
@app.route('/index')
def index():
    return 'hello world'
2.路由加载源码分析
- 先执行route函数 - def route(self, rule, **options):
 def decorator(f):
 endpoint = options.pop("endpoint", None)
 self.add_url_rule(rule, endpoint, f, **options)
 return f
 return decorator
 
- 执行 - add_url_rule函数- def add_url_rule(
 self,
 rule,
 endpoint=None,
 view_func=None,
 provide_automatic_options=None,
 **options
 ):
 if endpoint is None:
 endpoint = _endpoint_from_view_func(view_func)
 options["endpoint"] = endpoint
 methods = options.pop("methods", None) if methods is None:
 methods = getattr(view_func, "methods", None) or ("GET",) rule = self.url_rule_class(rule, methods=methods, **options) self.url_map.add(rule)
 if view_func is not None:
 self.view_functions[endpoint] = view_func
 - 将 url = /index和methods = [GET,POST]和endpoint = "index"封装到Rule对象
- 将Rule对象添加到 app.url_map中。
- 把endpoint和函数的对应关系放到 app.view_functions中。
- 当一个请求过来时,先拿路由在app.url_map找对应的别名,再在app.view_functions中找到别名对应的视图函数
 
- 将 
06 flask源码剖析之路由加载的更多相关文章
- Flask源码之:路由加载
		路由加载整体思路: 1. 将 url = /index 和 methods = [GET,POST] 和 endpoint = "index"封装到Rule对象 2. 将Ru ... 
- 05 flask源码剖析之配置加载
		05 Flask源码之:配置加载 目录 05 Flask源码之:配置加载 1.加载配置文件 2.app.config源码分析 3.from_object源码分析 4. 总结 1.加载配置文件 from ... 
- flask源码剖析系列(系列目录)
		flask源码剖析系列(系列目录) 01 flask源码剖析之werkzurg 了解wsgi 02 flask源码剖析之flask快速使用 03 flask源码剖析之threading.local和高 ... 
- 06 drf源码剖析之权限
		06 drf源码剖析之权限 目录 06 drf源码剖析之权限 1. 权限简述 2. 权限使用 3.源码剖析 4. 总结 1. 权限简述 权限与身份验证和限制一起,决定了是否应授予请求访问权限. 权限检 ... 
- 08 Flask源码剖析之flask拓展点
		08 Flask源码剖析之flask拓展点 1. 信号(源码) 信号,是在flask框架中为我们预留的钩子,让我们可以进行一些自定义操作. pip3 install blinker 2. 根据flas ... 
- flask 源码剖析
		flask 上下文管理源码流程及涉及的部分技术点 [flask源码梳理]之一 偏函数_mro [flask源码梳理]之二 面向对象中__setattr__ [flask源码梳理]之三 Local ... 
- Flask源码剖析详解
		1. 前言 本文将基于flask 0.1版本(git checkout 8605cc3)来分析flask的实现,试图理清flask中的一些概念,加深读者对flask的理解,提高对flask的认识.从而 ... 
- 04 flask源码剖析之LocalStack和Local对象实现栈的管理
		04 LocalStack和Local对象实现栈的管理 目录 04 LocalStack和Local对象实现栈的管理 1.源码入口 1. flask源码关于local的实现 2. flask源码关于l ... 
- 07 flask源码剖析之用户请求过来流程
		07 Flask源码之:用户请求过来流程 目录 07 Flask源码之:用户请求过来流程 1.创建ctx = RequestContext对象 2. 创建app_ctx = AppContext对象 ... 
随机推荐
- laravel clone后需要做的操作
			首先 安装依赖关系 composer install 第二步 复制配置文件 cp .env.example .env 第三步 创建新的应用程序密钥 php artisan key:generate 第 ... 
- 最全的DOM事件笔记
			1. DOM事件模型 DOM是微软和网景发生"浏览器大战"时期留下的产物,后来被"W3C"进行标准化,标准化一代代升级与改进,目前已经推行至第四代,即 leve ... 
- 深入理解React:懒加载(lazy)实现原理
			目录 代码分割 React的懒加载 import() 原理 React.lazy 原理 Suspense 原理 参考 1.代码分割 (1)为什么要进行代码分割? 现在前端项目基本都采用打包技术,比如 ... 
- 这一次搞懂Spring事务注解的解析
			前言 事务我们都知道是什么,而Spring事务就是在数据库之上利用AOP提供声明式事务和编程式事务帮助我们简化开发,解耦业务逻辑和系统逻辑.但是Spring事务原理是怎样?事务在方法间是如何传播的?为 ... 
- 《MySQL技术内幕:InnoDB存储引擎》读书笔记
			一.Mysql体系结构和存储引擎 1. 概念: 数据库:物理操作系统文件或其他形式文件类型的集合.(是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合.) ... 
- 05.DRF-Django REST framework 简介
			一.明确REST接口开发的核心任务 分析一下上节的案例,可以发现,在开发REST API接口时,视图中做的最主要有三件事: 将请求的数据(如JSON格式)转换为模型类对象 操作数据库 将模型类对象转换 ... 
- vue 框架,入门必看
			vue 的 入门 el 的挂载点: el 是用来设置vue实例挂载,(管理)的元素 vue会管理el选项命中的元素以及内部的后代元素 可以使用其他的选择器,但是不建议使用ID选择器 可以使用其他的双标 ... 
- typedef 定义指针数组和数组指针及其使用。
			#include<stdio.h> typedef char arr[][]; typedef char *name[]; // 指针数组 typedef char (*lan)[]; / ... 
- git 远程分支和tag标签的操作
			git远程分支操作:1.创建远程分支git push --set-upstream origin develop:develop2在服务器创建远程分支devlop2,让本地的develop分支和dev ... 
- 基数排序(Java)
			基数排序(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 基数排序(桶排序)介绍 基数排序(radix sort)属 ... 
