首页 > 其他 > 详细

Flask端点概念

时间:2020-11-27 22:28:43      阅读:42      评论:0      收藏:0      [点我收藏+]

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端点概念

原文:https://www.cnblogs.com/Skimt/p/14050251.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!