创建一个wsgiutils.py用于存放wsgi的装饰器内容,装饰器可以对不同的函数名进行功能的拓展,把需要重复处理的内容放到装饰器函数里,需要用到时调用即可。
# wsgi装饰器:不改变函数的名字,对函数进行扩展
from webob import Request
def wsgi_decator(func):
def new_func(environ,start_response):
# 使用Request统一处理environ
request = Request(environ)
# 调用传入的 func
response = func(request) # Response(body='hello world')
return response(environ,start_response)
new_func.__name__ = func.__name__
new_func.__doc__ = func.__doc__
return new_func
创建一个contraller.py用于存放不同路径下显示的页面,在这个文件中只需要返回添加到web页面的内容,不同页面的内容放到不同的函数名,路由根据函数名寻找相应的内容
需要安装和导入webob模块、调用之前写好的装饰器文件wsgiutils文件中的装饰器函数
from webob import Response
from wsgiutils import wsgi_decator
@wsgi_decator
def hello_app(request):
return Response(body="hello world")
@wsgi_decator
def cart_app(request):
return Response(body="hello cart")
# 图标请求
@wsgi_decator
def handle_app(request):
return Response(body="")
# 非法路径返回内容
@wsgi_decator
def page404(request):
return Response(body="404 Not Found")
创建routeurls.py文件
路由分发-selector,用于注册路径,根据路径寻找不同路径下的web页面
安装和调用selector模块,在相应的路径下调用 contraller.py文件中相应的函数,显示相应的页面内容
from contraller import *
import selector
routes=[
('/cart',{'GET':cart_app}),
('/favicon.ico',{'GET':handle_app}),
('/',{'GET': hello_app})
]
app = selector.Selector(mappings=routes)
# # 非法路径404
app.status404 = page404
在main.py文件创建一个服务器
from wsgiref import simple_server
from routeurls import app
# 创建服务
server = simple_server.make_server('',8004,app)
print("web server is listening at 8004........")
# 启动服务
server.serve_forever()
如果需要添加或更改,只需要在相应的文件中添加路径和内容即可



