2 视图路由加参数_flask路由

本文详细探讨了Flask框架中的路由概念,包括使用@app.route装饰器和app.add_url_rule()注册路由,endpoint的作用及其在URL反向解析中的重要性。文章通过源码分析解释了路由匹配的过程,涉及RequestContext、MapAdapter、Rule类和视图函数的调用,揭示了Flask如何高效地处理HTTP请求。
摘要由CSDN通过智能技术生成

路由

  • 路由
    • 关于路由
    • 注册路由
      • endpoint
        • 作用
        • 为什么要这样设计
      • 继续分析
    • 路由匹配

关于路由

所谓路由,就是处理请求URL和函数之间关系的程序

还是根据例子看源码

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'hello world!'

if __name__ == '__main__':
    app.run()

Flask中也是对URL规则进行统一管理的,创建URL规则有两种方式:

1.使用@app.route修饰器,并传入URL规则作为参数,将函数绑定到URL,这个过程便将一个函数注册为路由,这个函数则被称为视图函数。

2.使用app.add_url_rule()。

注册路由

定位到@app.route修饰器,看看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

很明显,这是一个装饰器,route()有两个参数,rule表示url规则。

该函数对参数进行处理之后,调用方法add_url_role(),这里也就验证了两种注册路由的方法等价。

继续定位add_url_rule这个方法:

@setupmethod
    def add_url_rule(
        self,
        rule,
        endpoint=None,
        view_func=None,
        provide_automatic_options=None,
        **options
    ):
   ....

1.首先这个方法传入的参数有这些:

  • rule: url规则
  • endpoint : 要注册规则的endpoint,默认是视图函数的名
  • view_func 视图函数
  • provide_automatic_options 请求方法是否添加OPTIONS方法的一个标志
  • options: 关于请求处理的一些方法等

endpoint

这里着重介绍下endpoint, 中文意思是端点

flask 内部是先把URL地址映射到端点(endpoint)上,然后再映射到视图函数(view_func)

看一个例子:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值