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
CRC Reverse Engineering Tool in Python

CRC Beagle CRC Beagle is a tool for reverse engineering CRCs. It is designed for commnication protocols where you often have several messages of the s

Colin O'Flynn 51 Jan 05, 2023
Change your Windows background with this program safely & easily!

Background_Changer Table of Contents: About the Program Features Requirements Preview Credits Reach Me See Also About the Program: You can change your

Sina.f 0 Jul 14, 2022
🤖🧭Creates google-like navigation menu using python-telegram-bot wrapper

python telegram bot menu pagination Makes a google style pagination line for a list of items. In other words it builds a menu for navigation if you ha

Sergey Smirnov 9 Nov 27, 2022
This is collection of Managementsystem programs: Hospital Management, Student Managemen, etc

Contribute in this repository and help other students with their assignment by adding python scripts for various management system programs.

GDSC BVP DET - Navi Mumbai 3 Mar 20, 2022
Results of Robot Framework 5.0 survey

Robot Framework 5.0 survey results We had a survey asking what features Robot Framework community members would like to see in the forthcoming Robot F

Pekka Klärck 2 Oct 16, 2021
Animation picker for Audodesk Maya 2017 (or higher)

Dreamwall Picker Animation picker for Audodesk Maya 2017 (or higher) Authors: Lionel Brouyère, Olivier Evers This tool is a fork of Hotbox Designer (L

DreamWall 93 Dec 21, 2022
Repositorio com arquivos processados da CPI da COVID para facilitar analise

cpi4all Repositorio com arquivos processados da CPI da COVID para facilitar analise Organização No site do senado é possivel encontrar a lista de todo

Breno Rodrigues Guimarães 12 Aug 16, 2021
Project repository of Apache Airflow, deployed on Docker in Amazon EC2 via GitLab.

Airflow on Docker in EC2 + GitLab's CI/CD Personal project for simple data pipeline using Airflow. Airflow will be installed inside Docker container,

Ammar Chalifah 13 Nov 29, 2022
A Tandy Color Computer 1, 2, and 3 assembler written in Python

CoCo Assembler and File Utility Table of Contents What is it? Requirements License Installing Assembler Assembler Usage Input File Format Print Symbol

Craig Thomas 16 Nov 03, 2022
EloGGs 🎮 is a 1v1.LOL Trophy Boosting Program (PATCHED)

EloGGs 🎮 is an old patched 1v1.LOL boosting program I developed months ago, My team made around $1000 total off of this, but now it's been patched by the developers.

doop 1 Jul 22, 2022
Sorter makes file organisation and management easier.

Sorter Sorter makes file organisation easier. It simply helps you organise several files that contain similar characteristics into a single folder. Yo

Aswa Paul 34 Aug 14, 2022
A dead-simple service that notifies you when something goes down.

Totmannschalter Totmannschalter (German for dead man's switch) is a simple service that notifies you when it has not received any message from a servi

1 Dec 20, 2021
Goal: Enable awesome tooling for Bazel users of the C language family.

Hedron's Compile Commands Extractor for Bazel — User Interface What is this project trying to do for me? First, provide Bazel users cross-platform aut

Hedron Vision 290 Dec 26, 2022
A library for pattern matching on symbolic expressions in Python.

MatchPy is a library for pattern matching on symbolic expressions in Python. Work in progress Installation MatchPy is available via PyPI, and

High-Performance and Automatic Computing 151 Dec 24, 2022
Lightweight and Modern kernel for VK Bots

This is the kernel for creating VK Bots written in Python 3.9

Yrvijo 4 Nov 21, 2021
Python implementation of the Lox language from Robert Nystrom's Crafting Interpreters

pylox Python implementation of the Lox language from Robert Nystrom's Crafting Interpreters. https://craftinginterpreters.com. This only implements th

David Beazley 37 Dec 28, 2022
通过简单的卷积神经网络直接预测出验证码图片中滑块的位置

使用说明 1. 在本地测试 运行python3 prdict_one.py即可,默认需要预测的图片路径位于testImg文件夹下的test1.png 运行python3 predict_folder.py预测testImg下的所有图片 2. 部署到服务器 运行python3 run_a_server

12 Mar 08, 2022
A package with multiple bias correction methods for climatic variables, including the QM, DQM, QDM, UQM, and SDM methods

A package with multiple bias correction methods for climatic variables, including the QM, DQM, QDM, UQM, and SDM methods

Sebastián A. Aedo Quililongo 9 Nov 18, 2022
Got-book-6 - LSTM trained on the first five ASOIAF/GOT books

GOT Book 6 Generator Are you tired of waiting for the next GOT book to come out? I know that I am, which is why I decided to train a RNN on the first

Zack Thoutt 974 Oct 27, 2022
Frappe app for authentication, can be used with FrappeVue-AdminLTE

Frappeauth App Frappe app for authentication, can be used with FrappeVue-AdminLTE

Anthony C. Emmanuel 9 Apr 13, 2022