Package: webnew
WebNew - v1.1.1 - __init__.pyA light library to build tiny websites 一个用于搭建轻量级网站的库更新日志：请跳转至notes.md查看对象：(WebApp,Function,DefaultSite)1.WebApp: 网站对应的App，是web.applaction对象。示例：fromwebnewimport*site('Hello')# 以GET访问 / 时，返回'Hello'reset()# 更新WebApp的值WebApp.run(globals())# 运行WebApp输出：浏览localhost:8080/，显示 Hello。2.Function：函数类型，即type(lambda: ...)。3.DefaultSite：网站的默认站点类，一般用于定义 /index ，建议通过调用 site() 方法设置。方法：1.site()site(_get:Union[object,Function]=lambdaself:...,_post:Union[object,Function]=lambdaself:...,mapping:str='/')->None用法：用于创建默认站点，一般用于定义网站的/index。参数：_get：当以GET访问时，调用的方法，值为一个函数，该函数需带一个 self 参数，若值为object，则在访问时直接返回该值。_post：当以POST访问时，调用的方法，值为一个函数，该函数需带一个 self 参数，若值为object，则在访问时直接返回该值。mapping：应为一个正则表达式，默认为'/'，代表访问该站点时的接口，正则表达式所匹配的内容将会分组传入 _ge t和 _post 的参数。示例1：fromwebnewimport*site('Hello, GET.','Hello, POST.')# 分别设置GET和POST的返回值run(globals())# 运行服务器输出：浏览或以GET访问localhost:8080/，显示 Hello, GET. 。
以POSt访问localhost:8080/，显示 Hello, POST. 。示例2：fromwebnewimport*site(lambdaself,name:f'Hello,{name}.',mapping='/(.+)')# 以GET访问/(.+)时，(.+)所匹配的内容会传入name参数再返回run(globals())# 运行服务器输出：浏览或以GET访问localhost:8080/Tom，显示 Hello, Tom. ，可以修改 /Tom 的值再次尝试 。2.newSite()newSite(class_,mapping:str='/')->None用法：用于创建新的站点，原理为调用传入类里的 GET 和 POST 方法。参数：class_：应为一个类，至少包含 GET 和 POST 方法中的一个用于处理GET和POST请求，至少需带一个 self 参数。mapping：应为一个正则表达式，默认为'/'，代表访问该站点时的接口，正则表达式所匹配的内容将会分组传入 class_ 的 GET 和 POST 的参数。示例1：fromwebnewimport*classindex:# 定义index类GET=lambdaself:'Hello, GET.'# 当以GET访问时返回POST=lambdaself:'Hello, POST.'# 当以POST访问时返回newSite(index)# 创建站点run(globals())# 运行服务器输出：浏览或以GET访问localhost:8080/，显示 Hello, GET. 。
以POSt访问localhost:8080/，显示 Hello, POST. 。示例2：fromwebnewimport*site('<!DOCTYPE HTML><meta charset="utf-8" /><h1>请传入文件路径</h1>')# 站点 / ：返回提示HTMLclassopen_file:# 站点类defGET(self,path):# GET方法，path为匹配的文件地址try:returnopen(path,encoding='utf-8')# 返回utf-8打开文件的内容exceptExceptionase:returnf'<!DOCTYPE HTML><meta charset="utf-8" /><h1>{e}</h1>'# 提示打开文件出错newSite(open_file,'/(.+)')# 新建站点 /(.+) ，对应open_file类run(globals())# 运行服务器输出：浏览或以GET访问localhost:8080/，显示 请传入文件路径 ，在路径后写入任意一个电脑文件路径，将会返回该文件的内容。可以尝试访问此链接访问Windows zh-CN 证书文件。3.debug()debug(mode:bool=True)->None用法：用于设置网站是否调试，不调用debug()时默认为调试。参数：mode：应为布尔值，当为True时启用调试模式，为False时关闭，若调试模式启用，Python后端出现任何错误时会在此网页上报错。示例:fromwebnewimport*site(lambdaself:error)# 出现NameErrorrun(globals())# 运行服务器输出:浏览或以GET访问localhost:8080/，显示如下界面（界面大体一致，不同环境会有所差异）：若在第二行后添加代码debug(False)则显示 internal server error4.reset()reset()->None用法：用于重新加载WebApp对象的值。（WebApp可能会在未来的版本中替换为一个函数，reset()也可能会随之删除）示例：fromwebnewimport*site()print(WebApp.browser())# 输出不固定reset()print(WebApp.browser())# 输出不固定输出：<web.browser.AppBrowser object at 0x00000136C15E0DC0><web.browser.AppBrowser object at 0x00000136C15E0DC0>由两次输出的数据不一致可知 reset() 改变了 WebApp 对象的值。5.newSites()newSites(*sites:tuple[Any,str])->None用法：用于一次新建多个站点。参数：sites：形式为 ((class_, mapping), ...)，意为循环执行newSite(class_, mapping)。示例：fromwebnewimport*site('<a href="/page_1">Go to page 1</a>')# 定义 / 站点classpage_1:GET=lambdaself:'<a href="/page_2">Go to page 2</a>'# 定义page_1类classpage_2:GET=lambdaself:'<a href="/">Go to index</a>'# 定义page_2类newSites((page_1,'/page_1'),(page_2,'/page_2'))# 添加page_1和page_2站点run(globals())# 运行服务器输出:浏览或以GET访问localhost:8080/，显示 Go to page 1 超链接，点击后跳转至localhost:8080/page_1，显示 Go to page 2 超链接，点击后跳转至localhost:8080/page_2, 显示 Go to index 超链接，点击后跳转至localhost:8080/。6.run()run(globals_=None)->None用法：用于运行服务器。参数：globals_：需要传入globals()。说明：凡是调用run()都应传入globals()。7.mappings()mappings()->tuple用法: 网站的所有站点储存，返回一个元组, 包含所有站点的定位符及其对应的类。示例：fromwebnewimport*site('Hello')# 以GET访问 / 时，返回'Hello'classgreet:GET=lambdaself:'Hi, I\'m John.'# 定义greet类的GET方法newSite(greet,'/greet')# 以GET访问 /greet 时，调用greet的GET方法，返回'Hi, I\'m John.'print(mappings())# 打印所有站点信息输出：('/', 'DefaultSite', '/greet', 'greet')8.open_web()open_web()->None用法: 网站的所有站点储存，返回一个元组, 包含所有站点的定位符及其对应的类。WebNew - v1.1.1 - request# request 用于测试所编写的webnew网站程序方法：GET() / POST()GET(ip:str=socket.gethostbyname(socket.gethostname()),localhost:int=8080,mapping:str='/')->Optional[requests.Response]POST(ip:str=socket.gethostbyname(socket.gethostname()),localhost:int=8080,mapping:str='/')->Optional[requests.Response]用法：通过 GET / POST 方法获取一个 requests.Response 对象