Flask要点理解

路由端点

通常,我们使用app.route()装饰器将视图函数注册为路由。如果不使用该装饰器,也可以采用app.add_url_rule(rule, endpoint, view_func)方法注册路由。如下:

app = Flask(__name__)

# 方法一
@app.route('/hello')
def greet():
return 'Hello.' # 方法二
def greet():
return 'Hello.'
app.add_url_rule('/hello', 'greet', 'greet')

URL规则和视图函数之间是通过端点来映射的(默认情况下端点是视图函数的名称),即

/hello(URL规则)-->greet(端点)-->greet(视图函数)

对于上面的方法一,我们也可以显示的使用endpoint参数来改变端点,而不是默认使用视图函数的名称,如下:

@app.route('/hello', endpoint='hello')
def greet():
return 'Hello.'

这时映射规则变成这样,/hello(URL规则)-->hello(端点)-->greet(视图函数)


:为什么引入端点的概念?

:使用端点可以实现蓝本的视图函数命名空间。

我们分别在蓝本A和蓝本B中创建一个名为index的视图函数,并将这两个蓝本注册到程序实例上,如下:

# project/app_package/blueprints_package/blueprint_A.py
from flask import Blueprint a_bp = Blueprint('A', __name__) @blog_bp.route('/')
def index():
return 'index'
# project/app_package/blueprints_package/blueprint_B.py
from flask import Blueprint b_bp = Blueprint('B', __name__) @blog_bp.route('/')
def index():
return 'index'
# project/app_package/__init__.py
from flask import Flask
from app_package.blueprints_package.blueprint_A import a_bp
from app_package.blueprints_package.blueprint_B import b_bp app = Flask('app_package')
app.register_blueprint(a_bp, url_prefix='/A')
app.register_blueprint(b_bp, url_prefix='/B')

接着我们使用命令flask routes查看当前程序注册的所有路由,返回结果如下:

$ flask routes
Endpoint Methods Rule
------------- ------- ---------------------------
A.index GET /A/
B.index GET /B/
static GET /static/<path:filename>

从输出结果可以看出,每个路由的URL规则(Rule)对应的端点(Endpoint)不再仅仅是视图函数名,而是“蓝本名.视图函数名”的形式,即扩展了端点的命名空间,解决了不同蓝本中视图函数重名的问题。

Flask端点概念的更多相关文章

  1. ASP.NET Core端点路由 作用原理

    端点路由(Endpoint Routing)最早出现在ASP.NET Core2.2,在ASP.NET Core3.0提升为一等公民. Endpoint Routing的动机 在端点路由出现之前,我们 ...

  2. 实验5、Flask设计模式和Web服务体验

    1. 实验内容 Flask appbuilder包括基本的表单验证,内置管理模块.本节主要学习Flask appbuilder的后台管理模块使用和对Flask设计模式拓展作简要介绍 2. 实验要点 掌 ...

  3. 《python核心编程》读书笔记--第16章 网络编程

    在进行网络编程之前,先对网络以及互联网协议做一个了解. 推荐阮一峰的博客:(感谢) http://www.ruanyifeng.com/blog/2012/05/internet_protocol_s ...

  4. [XBee] ZigBee学习笔记

    转自:http://blog.csdn.net/wanghanjiett/article/details/6931867 几个重要概念: node(节点): 在zigbee堆栈中最多有三种节点:Coo ...

  5. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  6. python核心编程--笔记

    python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找pyt ...

  7. Python高手之路【十三】socket网络编程

    什么是客户/服务器架构? 什么是客户/服务器架构?不同的人有不同的答案.这要看你问的是什么人,以及指的是软件系统还是硬件系统了.但是,有一点是共通的:服务器是一个软件或硬件,用于提供客户需要的&quo ...

  8. python实现TCP/UDP通信

    一.说明 对于TCP/udp的说明已经很多了,我在这里只是简单的说明一下 二.套接字scoket 套接字是一种具有之前所说的"通信端点"概念的计算网络数据结构.相当于电话插口,没它 ...

  9. (二)Wireshark的实用表格

    主要内容: 1.了解端点概念,学习如何在Wireshark中查询端点信息 2.学习利用端点窗口与会话窗口来分析数据包的特点 3.学会Wireshark的协议分层统计窗口的用法 一.端点概念 和数学里的 ...

随机推荐

  1. CPU上下文

    CPU上下文 包括CPU寄存器和程序计数器(Program Counter,PC). CPU寄存器,是CPU内置的容量小.但速度极快的内存. 程序计数器,是用来存储CPU正在执行的指令位置.或者即将执 ...

  2. SPOJ16607 IE1 - Sweets

    题面 传送门: 洛咕 SPOJ Solution 这题的想法挺妙的. . 首先,对于这种区间求答案的问题,我们一般都可以通过类似前缀和的思想一减来消去a,即求[a,b]的答案可以转化为求[1,b]-[ ...

  3. Stimulsoft Reports和Dashboards发布新版本2020.5具有多项改进

    Stimulsoft仪表工具实现所需的数据可视化和自己的信息图表.该产品能够应用必要的过滤器和排序,汇总数据,执行任何复杂度的计算.该产品的优势在于其多功能性-能够为您的业务,财务,销售,行业等任何领 ...

  4. SpringCloud gateway 过滤

    如果需要获取一张图片但服务器没有过滤图片请求地址时,每次请求图片都需要携带token等安全验证密钥,可到nacos配置网关(gateway)的security配置,可过滤掉你配置的url(可理解为白名 ...

  5. 用数组实现队列(顺序队列&循环队列)

    用数组实现队列(顺序队列&循环队列) 顺序队列 ️ 队列(先进先出) 几个问题: 队列方法:入队.出队 队列的存储:即队首队尾两个指针, 扩容:如果队列容量不够了,应该扩容,如果队尾没有位置了 ...

  6. HTML5+CSS3热门活动页面

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. Docker系列01—Docker 基础入门

    一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...

  8. [.Net Core 3.0+/.Net 5] System.Text.Json中时间格式化

    简介 .Net Core 3.0开始全新推出了一个名为System.Text.Json的Json解析库,用于序列化和反序列化Json,此库的设计是为了取代Json.Net(Newtonsoft.Jso ...

  9. 3.3 Spring5源码---循环依赖过程中spring读取不完整bean的最终解决方案

    根据之前解析的循环依赖的源码, 分析了一级缓存,二级缓存,三级缓存的作用以及如何解决循环依赖的. 然而在多线程的情况下, Spring在创建bean的过程中, 可能会读取到不完整的bean. 下面, ...

  10. 4. 树形DP

    337. 打家劫舍 III https://leetcode-cn.com/problems/house-robber-iii/ /** * Definition for a binary tree ...