Flask端点概念
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端点概念的更多相关文章
- ASP.NET Core端点路由 作用原理
端点路由(Endpoint Routing)最早出现在ASP.NET Core2.2,在ASP.NET Core3.0提升为一等公民. Endpoint Routing的动机 在端点路由出现之前,我们 ...
- 实验5、Flask设计模式和Web服务体验
1. 实验内容 Flask appbuilder包括基本的表单验证,内置管理模块.本节主要学习Flask appbuilder的后台管理模块使用和对Flask设计模式拓展作简要介绍 2. 实验要点 掌 ...
- 《python核心编程》读书笔记--第16章 网络编程
在进行网络编程之前,先对网络以及互联网协议做一个了解. 推荐阮一峰的博客:(感谢) http://www.ruanyifeng.com/blog/2012/05/internet_protocol_s ...
- [XBee] ZigBee学习笔记
转自:http://blog.csdn.net/wanghanjiett/article/details/6931867 几个重要概念: node(节点): 在zigbee堆栈中最多有三种节点:Coo ...
- python核心编程第二版笔记
python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d 提供调试输出1.2 –O 生成优化的字节码(生成 ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
- Python高手之路【十三】socket网络编程
什么是客户/服务器架构? 什么是客户/服务器架构?不同的人有不同的答案.这要看你问的是什么人,以及指的是软件系统还是硬件系统了.但是,有一点是共通的:服务器是一个软件或硬件,用于提供客户需要的&quo ...
- python实现TCP/UDP通信
一.说明 对于TCP/udp的说明已经很多了,我在这里只是简单的说明一下 二.套接字scoket 套接字是一种具有之前所说的"通信端点"概念的计算网络数据结构.相当于电话插口,没它 ...
- (二)Wireshark的实用表格
主要内容: 1.了解端点概念,学习如何在Wireshark中查询端点信息 2.学习利用端点窗口与会话窗口来分析数据包的特点 3.学会Wireshark的协议分层统计窗口的用法 一.端点概念 和数学里的 ...
随机推荐
- java数据结构-08队列
一.什么是队列 队列是一种特殊的线性表,只能在头尾两端进行操作,特点是先进先出:就像排队买票一样,先来的先买 二.接口设计 三.代码实现 可以使用动态数组.链表等实现:这里两种实现栈与双向链表 1. ...
- eclipse之SSH配置struts2【一】 (使用版本 2.3.24.1)
eclipse创建Dynamic web project,勾选生成web.xml,创建index.jsp页面,tomcat部署能正常运行.进行下一步struts配置. web.xml中添加配置,配置在 ...
- python类的封装与继承
封装 关注公众号"轻松学编程"了解更多. 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义本身就是封装的体现. 狭义的封装:一个类的某些属性, ...
- .NET Core如何进行请求转发?
前言 冒个泡,近日,有关注我公众号的小伙伴私信我,遇到一个问题搞了很久没解决,此问题具有参考意义,这里跟大家分享下,希望对后续可能有需要的你能有所参考和帮助. 请求转发问题 内网环境跟外网隔离,现在外 ...
- Charles使用part2——代理设置
一.charles代理原理: 如果本地开了代理: 二.设置代理 1.设置代理端口: proxy->proxy setting 打开代理设置界面,代理端口默认是 8888,可以使用默认也可以自己 ...
- NOIP 2018 D1 解题报告(Day_1)
总分 205分 T1 100分 T2 95分 T3 10分 T1: 题目描述 春春是一名道路工程师,负责铺设一条长度为 nn 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 ...
- 数据库本地data source
数据源表示数据库所在设备的ip地址或名称,基本上有以下几种写方法 data source = (local) data source = "127.0.0.1" data sour ...
- ZOJ 1005 Jugs(BFS)
Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with th ...
- 多服务器使用Docker设置一主一从三哨兵redis(完整)
本来应该续之前那篇博客Docker配置redis哨兵模式--多服务器·上写一个下篇的,但是忽然意识到应该将必要的环境打包为一个基础镜像,在此基础上建立与redis有关的镜像,这样既能够快速打包,又能够 ...
- SpringBoot整合JWT实战详解
jwt 介绍就不多说了,下面通过代码演示开发过程中jwt 的使用. (1)在pom.xml中引入对应的jar <dependency> <groupId>io.jsonwebt ...