基于wsgiref Web框架
from wsgiref.simple_server import make_server from urls import urls from views import * def run(env, response): ''' :param env: 请求相关的所有数据类型 :param response: 相应相关的数据类型 :return: 返回给浏览器的数据 ''' # print(env) # env 是一个大字典,wsgiref模块将http格式的数据转化成大字典 response('200 OK',[]) current_path = env.get('PATH_INFO') func = None for url in urls: if current_path == url[0]: func = url[1] break # 匹配到一个后应该立刻结束for循环 if func: res = func(env) else: res = error(env) return [res.encode('utf-8')] if __name__ == '__main__': server = make_server('127.0.0.1',8080,run) ''' 会实时监听127.0.0.1:8080 地址,只要客户端来了都会交给run函数处理(会自动加括号‘run()'触法run函数的运行) flask启动源码 make_server('127.0.0.1',8080,obj) 也会自动给obj加括号 __call__ ''' server.serve_forever() # 启动服务器
urls 文件
from views import * # url与函数的对应关系 urls = [ ('/index', index), ('/login', login), ('/xxx', xxx), ('/get_time', get_time), ('/get_dict', get_dict) ]
views 文件
def index(env): return 'index' def login(env): return 'login' def error(env): return '404' def xxx(env): with open(r'templates/02myxx.html', 'r', encoding='utf-8')as f: return f.read() import datetime def get_time(env): current_time = datetime.datetime.now().strftime('%Y-%m-%d-%X') # with open(r'templates/03mytime.html', 'r',encoding='utf-8')as f: data = f.read() # data就是一串字符串 data = data.replace('dddd', current_time) return data ''' jinja2 ''' from jinja2 import Template def get_dict(env): user_dict = {'username':'jason','age':18,'hobby':'read'} with open('templates/04get_dict.html', 'r',encoding='utf-8')as f: data = f.read() tmp = Template(data) res = tmp.render(user =user_dict) # 给get_dict.html 传递一个值,也页面上通过变量名user就能够拿到user_dict return res import pymysql def get_user(env): coon = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'root', password = '2802017872liu', db = 'day59', charset = 'utf8', autoicommit = True ) cursor = coon.cursor(cursor=pymysql.cursors.DictCursor) sql = 'select * from userinfo' affect_rows = cursor.execute(sql) dat_list = cursor.fetchall() # 将获取到的数据传输给HTML文件