Web.py 框架学习笔记 - ctx
摘要:
ctx用于存取web请求的环境变量,基于ThreadedDict类进行实例化。ThreadedDict类可实例化字典类型的对象,该对象某些属性可用于存取处理线程的id。 这样字典化实例的线程池使得web访问的并发控制很好地解决,而且线程之间非常独立。
范例:
class example:
def GET(self):
referer = web.ctx.env.get('HTTP_REFERER', 'http://google.com')
raise web.seeother(referer)
上述代码使用web.ctx.env来获取HTTP_REFERER这一环境变量。如果没有值,则默认会返回‘http://google.com‘,然后重定向到该网站。
web.ctx可以通过loadhook(挂载)的方式来进行设置。例如,每当service收到一个web请求,Session数据都会存放在web.ctx中。因为web.ctx是线程安全的,这时候就可以使用该Session数据(该数据必须是python中可识别的数据类型)。
ctx中包含的数据:
| environ 即 env | 一个包含标准WSGI 环境变量格式的字典 |
| home | web应用的根目录,同时包含任何外部应用引用时的显示名,例如,http://example.org/admin |
| homedomain | ? (显示为协议+主机) http://example.org |
| homepath | 用户请求的path,即homepath + path = 用户完整的请求地址,处理时会与urls进行交互 |
| host | 主机名,包含端口(默认8080) |
| ip | 发起web请求的用户ip |
| method | 发起的web请求方法 |
| path | 用户请求部分的path,例如,/logon/authenticated,但是对于挂载的子应用,则不会显示子应用的名称。例如,主应用myapp.py,子应用subapp.py。子应用中有页面/read/blogs,则ctx中只会返回example.org/read/blogs而不是example.org/subapp/read/blogs |
| protocol | 请求遵循的协议http/https/ftp... |
| query | url中请求的条件 |
| fullpath 即 path+query | 完整的请求地址,包含请求的页面及请求的条件 |
响应状态:
- status - http状态码,(默认200,ok )异常响应码:401 未授权
- headers - 包含请求头(http header)信息的两个元组
- output - 包含响应实体的字符串
Web.py 框架学习笔记 - ctx的更多相关文章
- Web.py 框架学习笔记 - URL处理
最近由于工作需要开始学习基于python的web应用框架web.py.为了方便学习,将学习心得逐日记下以便日后复习. URL 模板: web.py提供了一套url处理的模板,在python工程中,只需 ...
- scrapy爬虫框架学习笔记(一)
scrapy爬虫框架学习笔记(一) 1.安装scrapy pip install scrapy 2.新建工程: (1)打开命令行模式 (2)进入要新建工程的目录 (3)运行命令: scrapy sta ...
- 【Python】【Web.py】详细解读Python的web.py框架下的application.py模块
详细解读Python的web.py框架下的application.py模块 这篇文章主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码, ...
- SSM框架学习笔记_第1章_SpringIOC概述
第1章 SpringIOC概述 Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 1.1 控制反转IOC IOC(inversion of controller)是一种概念 ...
- j2ee开发之Spring2.5框架学习笔记
Spring 2.5框架学习笔记 1.是一个开源的控制反转IOC和面向切面AOP的容器框架 2.IOC控制反转 public class PersonServiceBean { private Per ...
- Spring框架学习笔记(5)——Spring Boot创建与使用
Spring Boot可以更为方便地搭建一个Web系统,之后服务器上部署也较为方便 创建Spring boot项目 1. 使用IDEA创建项目 2. 修改groupid和artifact 3. 一路n ...
- phalcon(费尔康)框架学习笔记
phalcon(费尔康)框架学习笔记 http://www.qixing318.com/article/phalcon-framework-to-study-notes.html 目录结构 pha ...
- Yii框架学习笔记(二)将html前端模板整合到框架中
选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...
- JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue
前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...
随机推荐
- (转)fiddler实现手机抓包的基础设置问题
电脑最好是笔记本,这样能和手机保持统一局域网内:其他不多说,直接说步骤了. 一.对PC(笔记本)参数进行配置 1. 配置fiddler允许监听到https(fiddler默认只抓取http格式的 ...
- 使用Hibernate模板调用存储过程
前提是该Dao类已经已经继承了org.springframework.orm.hibernate5.support.HibernateDaoSupport,并且在整个项目中已经配置好了事务,或者是手动 ...
- NOIP 2001 提高组 题解
NOIP 2001 提高组 题解 No 1. 一元三次方程求解 https://vijos.org/p/1116 看见有人认真推导了求解公式,然后猥琐暴力过的同学们在一边偷笑~~~ 数据小 暴力枚举即 ...
- 关于发布中报“未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项”的问题解决方法
遇到这个问题了,我也是醉了,开发就一个还在忙别的事情,我想想自己解决 你们遇到过吗?我在网上找到好多解决的方法,比如改webconfig文件,或者改package.config文件,都没用.但是我看到 ...
- H5投放在朋友圈广告做压力测试
一.环境 MacOS Sierra 二.背景 朋友圈广告投放的H5需要做ab压测,这里不赘述. 具体官方文档如下:http://ad.weixin.qq.com/learn/n10 三.正文 (1)别 ...
- div模拟textarea文本域轻松实现高度自适应
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- NYOJ 252 01串(斐波那契数列变形)
01串 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 ACM的zyc在研究01串,他知道某一01串的长度,但他想知道不含有“11”子串的这种长度的01串共有多少个, ...
- 利用Java随机,生成随机学生数据
为模拟向数据库中大量插入学生数据(注:此处应该用PreparedStatement.batchUpdate等批处理提高效率)的情形,通过Java随机来生成学生数据. 一.要生成的学生数据 studen ...
- salesforce 替代默认生成pdf页面方式
salesforce默认的pdf页面只能设置Arial Unicode MS字体,而该字体默认的中文是日本字符,目前看来没办法设置成标准的中文字符,导致一些字看起来是不对的.如下图:(将确骨写) 这样 ...
- ORACLE 程序包
程序包由PL/SQL程序元素(变量,类型)和匿名PL/SQL(游标),命名PL/SQL 块(存储过程和函数)组成. 程序包可以被整体加载到内存中,这样可以大大加快程序包中任何一个组成部分的访问速度. ...