周末在家了看了一天web.py的application 代码,感觉云里雾里的,关键是这python语言是弱类型语言,不知道里面的变量到底是啥,里面有哪些属性,感觉还是java在这方面靠谱下。 最后自己动手简单实现了个简单的web服务框架
import util
import context
urls = (
'/home', 'home',
)
class home:
def get(self):
return '<h1>I am the home</h1>'
class application:
def __init__(self, mapping=(), fvars={}, autoreload=None):
self.mapping=list(util.group(mapping, 2))
self.fvars=fvars;
def run(self,host=8000):
from wsgiref.simple_server import make_server
httpd = make_server('', host, self.wsgifunc())
print "Serving HTTP on port "+str(host)+" ...."
# 开始监听HTTP请求:
httpd.serve_forever()
def wsgifunc(self, *middleware):
def wsgi(env, start_resp):
self._load(env)
path=context.ctx.path
fn,args=self._match(self.mapping, path)
start_resp('200 OK', [('Content-Type', 'text/html')])
cls=self.fvars[fn]
method=getattr(cls(),'get')
return method()
return wsgi
def _load(self,env):
ctx=context.ctx
ctx.__dict__.clear()
ctx.status = '200 OK'
ctx.ip = env.get('REMOTE_ADDR')
ctx.method = env.get('REQUEST_METHOD')
ctx.path = env.get('PATH_INFO')
if env.get('QUERY_STRING'):
ctx.query = '?' + env.get('QUERY_STRING', '')
else:
ctx.query = ''
ctx.ip = env.get('REMOTE_ADDR')
ctx.method = env.get('REQUEST_METHOD')
def _match(self, mapping, value):
for path, action in mapping:
if isinstance(action,basestring):
if str(path).find(value)!=-1:
return action,None
return None
a=application(urls,globals())
a.run(8800)
if __name__ == '__main__':
pass
context文件:
import threading
ctx=threading.local()
感觉这python要搞个web框架,还挺简答的,
application(urls,globals()) 这里一定要把 globals 传进去,否则找不到控制的类,通过这
cls=self.fvars[fn]
method=getattr(cls(),'get')
return method()
来根据字符串的 类名找到对应的类,然后反射获取 get方法来执行
python 的 globas还是真是挺奇怪的东西
分享到:
相关推荐
首先,你需要访问Web.py的官方网站或者通过GitHub等代码托管平台找到web.py的源码压缩包,这里显示的文件名是"webpy-master",这意味着你已经下载了源码的主分支。下载后,将其解压缩到本地的一个目录,例如`C:\temp...
【Python web.py 框架详解】 web.py 是一个轻量级且强大的Python Web框架,它的设计理念是简洁、直观,并且易于上手。这个框架旨在让开发者能够快速地构建Web应用,同时保持代码的清晰性和可维护性。web.py 的核心...
web.py 是一个轻量级Python web框架,它简单而且功能强大。web.py是一个开源项目。该框架由美国作家、Reddit联合创始人、RSS规格合作创造者、著名计算机黑客Aaron Swartz开发。web.py目前已被很多家大型网站所使用。
web.py 是一个轻量级Python web框架,它简单而且功能强大。web.py是一个开源项目。该框架由美国作家、Reddit联合创始人、RSS规格合作创造者、著名计算机黑客Aaron Swartz开发。web.py目前已被很多家大型网站所使用。...
【标题】"py2+web.py.rar" 指的是一个使用Python 2版本和Web.py框架构建的Web应用程序的压缩文件。Web.py是Python语言中的一个轻量级Web开发框架,它允许开发者快速地创建功能丰富的Web服务。在Windows Server 2008 ...
1. **类型注解的添加**:为了与Python 3.7的类型系统兼容,`webpy-py3`可能在`web.py`的源码中添加了类型注解,以消除类型检查工具的警告或错误。 2. **语法更新**:可能更新了与新Python 3.7语法不兼容的部分,...
`web.py` 是一个针对Python编程语言设计的轻量级Web框架,它的核心设计理念是简洁和高效。作为一个小巧而灵活的框架,`web.py` 能够帮助开发者快速构建Web应用程序,同时保持代码的清晰性和可维护性。在本文中,我们...
web.py是一个轻量级的Python Web框架,设计简洁且易于上手。它提供了MVC(模型-视图-控制器)架构模式,让开发者能够快速地开发出Web应用。web.py的核心概念包括URL路由、请求处理、模板渲染等。 1. URL路由:web....
一个用web.py写的Hello World...1、用终端CD到web.py,执行:python setup.py install,在Linux 等系统下,需要root 的权限,可以执行:sudo python setup.py install。 2、CD到项目目录,执行python index.py,OK啦。
webpy实战 一个简单的web.py应用示例,包括一个首页和一个显示用户欢迎消息的页面: ```python import web urls = ( '/', 'Index', '/hello/(.*)', 'Hello' ) class Index: def GET(self): return "Welcome...
Web.py是一个基于Python的Web开发框架,为开发人员提供了一个简洁的API来构建Web应用程序。从提供的文件内容来看,这部分文档涵盖了几个关键的知识点,包括用户输入的访问、数据库的访问、模板的使用以及Web.py应用...
在本文中,我们将深入探讨如何使用Python的web.py框架开发HTTP服务器并解决跨域问题。跨域问题通常在Web开发中出现,尤其是当前端应用(如浏览器中的JavaScript)尝试从一个源向另一个源发送请求时。由于浏览器的...
web.py是一个轻量级的Python Web框架,它的设计哲学是简洁而直接,适合初学者和有经验的开发者。由于其开源性质,web.py可以在任何项目中自由使用,不受任何限制。虽然小巧,但web.py功能强大,能够处理复杂的Web...
webpy的设计理念力求精简(Keep it simple and powerful),源码很简短,只提供一个框架所必须的东西,不依赖大量的第三方模块,它没有URL路由、没有模板也没有数据库的访问。这样的优点是,框架给开发带来的限制少...
【标题】基于 Python web.py Redis 的博客系统是一个典型的 Web 应用开发实例,适用于计算机科学与技术专业的毕业生进行设计和实现。web.py 是一个轻量级的 Python Web 框架,而 Redis 是一个高性能的键值存储系统,...
`web.py` 是一个轻量级、简洁且灵活的 Python Web 开发框架,它提供了一种快速构建 Web 应用程序的方法。本教程旨在为初学者提供关于 web.py 的详细指导,涵盖从基础应用到高级特性的全方位介绍。 ## 基本应用 1. ...
### Python3.x中安装Web.py的方法与技巧 #### 一、引言 在Python开发领域,Web.py是一款轻量级的Web应用框架,它简洁易用,非常适合快速开发小型Web应用。然而,在不同版本的Python环境中,特别是Python 3.x中安装...
"pip-20.0.2-py2.py3-none-any.whl"文件名的结构遵循一定的规范,其中`py2.py3`表示该包兼容Python 2.x和Python 3.x两个版本,`none`意味着它不依赖于特定的本地化环境,而`any`则表明它适用于任何平台。 Python的...