tornado: web.py 之 其他

第一个有意思的是RedirectHandler,它的代码和思路都比较有趣,代码很短,直接看:

 

class RedirectHandler(RequestHandler):
    """Redirects the client to the given URL for all GET requests.

    You should provide the keyword argument "url" to the handler, e.g.::

        application = web.Application([
            (r"/oldpath", web.RedirectHandler, {"url": "/newpath"}),
        ])
    """
    def initialize(self, url, permanent=True):
        self._url = url
        self._permanent = permanent

    def get(self):
        self.redirect(self._url, permanent=self._permanent)

 

 

StaticFileHandler:

其中最重要的是get方法,大致流程如下:

  1. 检查请求是否合法(映射后的文件地址是否正确)
  2. 设置header:
    a. last-modified
    b. content-type
    c. Cache保存时间
    d. 任何额外的header(通过调用set_extra_headers方法)
    e. 根据request header中的“If-Modified-Since”,决定是否需要返回文件内容,或者简单返回304
    f. 如果需要返回文件内容,计算并设置etag
  3. 向buffer中写入(调用write方法)数据,并设置“Content-Length”

除此之外,还有一个有用的helper方法make_static_url,调用这个方法,会返回一个带有版本信息(v=???)的url

 

本来在web.py中还有几个比较重要的类UIModule和TemplateModule,不过简单看了一下基本没有明白到底在干毛,所以决定去看看template.py,之后回来再补上这两块内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值