Skip to content

Latest commit

 

History

History
63 lines (47 loc) · 1.52 KB

13.6使用字典管理请求路径.md

File metadata and controls

63 lines (47 loc) · 1.52 KB

使用字典管理请求路径

文件结构:

├── server.py
├── utils.py
├── urls.py
├── pages
        └── index.html
└── templates
    └── info.html

urls.py文件:该文件里只有一个字典对象,用来保存请求路径和处理函数之间的对应关系。

urls = {
    '/': 'show_home', 
    '/index.html': 'show_home', 
    '/test.html': 'show_test', 
    '/info.html': 'show_info'
}
Copy

server.py文件:

from wsgiref.simple_server import make_server
from urls import urls
from utils import load_html, load_template

def show_home(start_response):
    return load_html('/index.html', start_response)

def show_test(start_response):
    start_response('200 OK', [('Content-Type', "text/html;charset=utf-8")])
    return ['我是一段普通的文字'.encode('utf-8')]

def show_info(start_response):
    return load_template('/info.html', start_response, name='张三',age=18})

def application(environ, start_response):
    path = environ.get('PATH_INFO')
    # 这里不再是一大堆的if...elif语句了,而是从urls字典里获取到对应的函数
    func = urls.get(path)
    if func:
        return eval(func)(start_response)
    # 其它请求暂时无法处理,返回404
    else:
        start_response('400 NOT FOUND', [('Content-Type', "text/html;charset=utf-8")])
        return ['页面未找到'.encode('utf-8')]

httpd = make_server('', 8000, application)
print("Serving HTTP on port 8000...")
httpd.serve_forever()