最近博主搬家,几天没更了,现在给大家分享一个很小型的框架mini_web,给大家讲述下里面的含义。
# 服务器给数据,返回数据给服务器
import re
from urllib.request import unquote # 解码
# 定义空字典,用来存储路径跟对应的函数引用
from pymysql import connect
url_dict = dict()
# start_response用来框架给服务器传响应头的数据
# environ用来得到服务器传过来的文件路径
def application(environ, start_response):
"""返回具体展示的界面给服务器"""
start_response('200 OK', [('Content-Type', 'text/html;charset=utf-8')]) # 返回响应头
# 根据不同的地址进行判断
file_name = environ['file_name']
for key, value in url_dict.items():
match = re.match(key, file_name) # 你的地址跟你的规则一致
if match:
# 匹配了
return value(match) # 调用匹配到的函数引用,返回匹配的页面内容
else:
# 说明没找到
return "not page is find!"
# 这个装饰器传参,用来完成路由的功能
def route(url_address): # url_address表示页面的路径
"""主要的目的自动添加路径跟匹配的函数到我们的url字典中"""
def set_fun(func):
def call_fun(*args, **kwargs):
return func(*args, **kwargs)
# 根据不同的函数名称去添加到字典中
url_dict[url_address] = call_fun
return call_fun
return set_fun
#################################################上面是框架部分#############################################
#
# @route(r"/add/(\d+).html") #这个地址,是一个正则的地址
# def index(match): # match是正则匹配完的对象
# return "返回界面显示%s"%match.group(1) # 返回网页的界面
# 显示首页
@route(r'/index.html')
def index(match):
with open("./templates/index.html")as f:
content_html = f.read()
conn = connect(host='localhost', port=3306, password='mysql', user='root', charset='utf8',
database='stock_db') # 网页一行的字符串
cs1 = conn.cursor()
sql = """select * from info;"""
cs1.execute(sql)
table_data = cs1.fetchall()
cs1.close()
co