A light library to build tiny websites

Overview

WebNew - v0.1.1 - __init__.py

A light library to build tiny websites 一个用于搭建轻量级网站的库

对象:

(mappings,
WebApp,
Function,
DefaultSite)

1.mappings: 网站的所有站点储存,返回一个元组, 包含所有站点的定位符及其对应的类。(在v0.10版本 mappings为一个变量,故将其纳入对象行列

示例:
from webnew import *
site('Hello')  # 以GET访问 / 时,返回'Hello'
class greet: GET = lambda self: 'Hi, I\'m John.'  # 定义greet类的GET方法
newSite(greet, '/greet')   # 以GET访问 /greet 时,调用greet的GET方法,返回'Hi, I\'m John.'
print(mappings())  # 打印所有站点信息
输出:

('/', 'DefaultSite', '/greet', 'greet')

2.WebApp: 网站对应的App,是web.applaction对象。

示例:
from webnew import *
site('Hello')  # 以GET访问 / 时,返回'Hello'
reset()  # 更新WebApp的值
WebApp.run(globals())  # 运行WebApp
输出:

浏览 localhost:8080/ ,显示 Hello。

3.Function:函数类型,即 type(lambda: ...)

4.DefaultSite:网站的默认站点类,一般用于定义 /index ,建议通过调用 site() 方法设置。

方法:

1.site()

site( 
    _get: Union[object, Function] = lambda self: ...,
    _post: Union[object, Function] = lambda self: ...,
    mapping: str = '/'
) -> None

用法 :用于创建默认站点,一般用于定义网站的/index。 参数_get:当以GET访问时,调用的方法,值为一个函数,该函数需带一个 self 参数,若值为object,则在访问时直接返回该值。

_post:当以POST访问时,调用的方法,值为一个函数,该函数需带一个 self 参数,若值为object,则在访问时直接返回该值。

mapping:应为一个正则表达式,默认为'/',代表访问该站点时的接口,正则表达式所匹配的内容将会分组传入 _ge t和 _post 的参数。

示例1:
from webnew import *
site('Hello, GET.', 'Hello, POST.')  # 分别设置GET和POST的返回值
run(globals())  # 运行服务器
输出:

浏览或以GET访问 localhost:8080/ ,显示 Hello, GET. 。 以POSt访问 localhost:8080/ ,显示 Hello, POST. 。

示例2:
from webnew import *
site(lambda self, 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:
from webnew import *
class index:  # 定义index类
    GET = lambda self: 'Hello, GET.'  # 当以GET访问时返回
    POST = lambda self: 'Hello, POST.'  # 当以POST访问时返回
newSite(index)  # 创建站点
run(globals())  # 运行服务器
输出:

浏览或以GET访问 localhost:8080/ ,显示 Hello, GET. 。 以POSt访问 localhost:8080/ ,显示 Hello, POST. 。

示例2:

请传入文件路径

') # 站点 / :返回提示HTML class open_file: # 站点类 def GET(self, path): # GET方法,path为匹配的文件地址 try: return open(path, encoding='utf-8') # 返回utf-8打开文件的内容 except Exception as e: return f'

{e}

' # 提示打开文件出错 newSite(open_file, '/(.+)') # 新建站点 /(.+) ,对应open_file类 run(globals()) # 运行服务器">
from webnew import *
site('
  

请传入文件路径

'
) # 站点 / :返回提示HTML class open_file: # 站点类 def GET(self, path): # GET方法,path为匹配的文件地址 try: return open(path, encoding='utf-8') # 返回utf-8打开文件的内容 except Exception as e: return f'

{e}

'
# 提示打开文件出错 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后端出现任何错误时会在此网页上报错。

示例:
from webnew import *
site(lambda self: error)  # 出现NameError
run(globals())  # 运行服务器
输出:

浏览或以GET访问 localhost:8080/ ,显示如下界面(界面大体一致,不同环境会有所差异):NameError.png

若在第二行后添加代码 debug(False)则显示 internal server error

4.reset()

reset() -> None

用法:用于重新加载 WebApp 对象的值。(WebApp可能会在未来的版本中替换为一个函数,reset()也可能会随之删除

示例:
from webnew import *
site()
print(WebApp.browser())  # 输出不固定
reset()
print(WebApp.browser())  # 输出不固定
输出:

由两次输出的数据不一致可知 reset() 改变了 WebApp 对象的值。

5.newSites()

newSites(
    *sites: tuple[Any, str]
) -> None

用法:用于一次新建多个站点。

参数

sites:形式为 ((class_, mapping), ...),意为循环执行 newSite(class_, mapping)

示例:
Go to page 1') # 定义 / 站点 class page_1: GET = lambda self: 'Go to page 2' # 定义page_1类 class page_2: GET = lambda self: 'Go to index' # 定义page_2类 newSites((page_1, '/page_1'), (page_2, '/page_2')) # 添加page_1和page_2站点 run(globals()) # 运行服务器">
from webnew import *
site('Go to page 1')  # 定义 / 站点
class page_1: GET = lambda self: 'Go to page 2'  # 定义page_1类
class page_2: GET = lambda self: 'Go to index'  # 定义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()

WebNew - v0.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 对象

Owner
BT.Q
BT.Q
Rotazioni: a linear programming workout split optimizer

Rotazioni: a linear programming workout split optimizer Dependencies Dependencies for the frontend and backend are respectively listed in client/packa

Marco 3 Oct 13, 2022
Web站点选优工具 - 优化GitHub的打开速度、高效Clone

QWebSiteOptimizer - Web站点速度选优工具 在访问GitHub等网站时,DNS解析到的IP地址可能并不是最快,过慢的节点会严重影响我们的访问情况,故制作出这样的工具来进一步优化网络质量。 由于该方案并非为VPN等方式进行的速度优化,以下几点需要您注意: 后续访问对应网站时仍可能需

QPT Family 15 May 01, 2022
Exploiting Linksys WRT54G using a vulnerability I found.

Exploiting Linksys WRT54G Exploit # Install the requirements. pip install -r requirements.txt ROUTER_HOST=192.169.1.1 ROUTER_USERNAME=admin ROUTER_P

Elon Gliksberg 31 May 29, 2022
Yet another Airflow plugin using CLI command as RESTful api, supports Airflow v2.X.

中文版文档 Airflow Extended API Plugin Airflow Extended API, which export airflow CLI command as REST-ful API to extend the ability of airflow official API

Eric Cao 106 Nov 09, 2022
Mangá downloader (para leitura offline) voltado para sites e scans brasileiros.

yonde! yonde! (読んで!) é um mangá downloader (para leitura offline) voltado para sites e scans brasileiros. Também permite que você converta os capítulo

Yonde 8 Nov 28, 2021
Meera 2 May 12, 2022
A novel dual model approach for categorization of unbalanced skin lesion image classes (Presented technical paper 📃)

A novel dual model approach for categorization of unbalanced skin lesion image classes (Presented technical paper 📃)

1 Jan 19, 2022
A Tool to validate domestic New Zealand vaccine passes

Vaccine Validator Tool to validate domestic New Zealand vaccine passes Create a new virtual environment: python3 -m venv ./venv Activate virtual envi

8 May 01, 2022
Wisdom Tree is a concentration app i am working on.

Wisdom Tree Wisdom Tree is a tui concentration app I am working on. Inspired by the wisdom tree in Plants vs. Zombies which gives in-game tips when it

NO ONE 241 Jan 01, 2023
String Spy is a project aimed at improving MacOS defenses.

String Spy is a project aimed at improving MacOS defenses. It allows users to constantly monitor all running processes for user-defined strings, and if it detects a process with such a string it will

10 Dec 13, 2022
Check COVID locations of interest against Google location history

Location of Interest Checker Script to compare COVID locations of interest to Google location history. The script produces a map plot (as shown below)

9 Mar 30, 2022
JARVIS PC Assistant is an assisting program to make your computer easier to use

JARVIS-PC-Assistant JARVIS PC Assistant is an assisting program to make your computer easier to use Welcome to the J.A.R.V.I.S. PC Assistant help file

Dasun Nethsara 2 Dec 02, 2022
Script to work around some quirks of the blender obj importer

ObjFix 1.0 (WIP) Script to work around some quirks of the blender obj importer Installation Download this repo In Blender, press "Edit" on the top-bar

Red_3D 4 Nov 20, 2021
SimBiber - A tool for simplifying bibtex with official info

SimBiber: A tool for simplifying bibtex with official info. We often need to sim

336 Jan 02, 2023
A simple python script where the user inputs the current ingredients they have in their kitchen into ingredients.txt

A simple python script where the user inputs the current ingredients they have in their kitchen into ingredients.txt and then runs the main.py script, and it will output what recipes can be created b

Jordan Leich 3 Nov 02, 2022
Simple python script for AD enumeration

AutoAD - Simple python script for AD enumeration This tool was created on my spare time to help fellow penetration testers in automating the basic enu

Mohammad Arman 28 Jun 21, 2022
Functions to analyze Cell-ID single-cell cytometry data using python language.

PyCellID (building...) Functions to analyze Cell-ID single-cell cytometry data using python language. Dependecies for this project. attrs(=21.1.0) fo

0 Dec 22, 2021
Union oichecklists For Python

OI Checklist Union Auto-Union user's OI Checklists. Just put your checklist's ID in and it works. How to use it? Put all your OI Checklist IDs (that i

FHVirus 4 Mar 30, 2022
Gerenciador de processos e registros pessoais do Departamento de Fiscalização de Produtos Controlados.

CRManager Gerenciador de processos e registros pessoais do Departamento de Fiscalização de Produtos Controlados. Descrição Este projeto tem como objet

Wolfgang Almeida 1 Nov 15, 2021
A python script that changes your desktop background based on current weather and time of the day.

Desktop background wallpaper, based on current weather and time A python script that changes your computer's desktop background based on current weath

Maj Gaberšček 1 Nov 16, 2021