web.py(0.61)源码剖析

本文深入解析web.py框架的application类,介绍其构造方法、自动加载功能、URL路由映射及处理器机制,阐述如何通过wsgifunc()实现WSGI兼容接口。

application.py

__all__ = [
    "application",
    "auto_application",
    "subdir_application",
    "subdomain_application",
    "loadhook",
    "unloadhook",
    "autodelegate",
]

__all__是一个字符串列表,里面包含要对外暴露的接口。即可以利用模块名直接调用且只能调用__all__中包含的类或者方法。

application类
下面是类的构造方法头

def __init__(self, mapping=(), fvars={
   
   }, autoreload=None):

一般会这样使用:

app = web.application(urls, global())

先看一下构造器的最后一个参数autoreload(自动加载),默认值为None,

if autoreload is None:
        autoreload = web.config.get("debug", False)

这段代码说明,当没有设置autoreload参数时,autoreload = web.config.debug,可能为True,也可能为False。如果没有设置web.config.debug,那autoreload = False,即不启动自动加载。
何为自动加载?
也就是在项目启动后,如果修改了代码,无需重新启动项目,而是程序内部自动加载,从而直接达到预期效果。这在调试代码时很有用。

构造器的第二个参数mapping=()代表urls路由元组,通过init_mapping()函数来初始化url路由映射关系,这个函数内部调用了utils工具类的group()函数

self.init_mapping(mapping)
...
...
def init_mapping(self, mapping):
    self.mapping = list(utils.group(mapping, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值