Web-PyOctopus is a lightweight Python web framework designed for learning and experimentation, inspired by modern frameworks like Django and FastAPI.
Project description
Web-PyOctopus: A Lightweight Python Web Framework
Web-PyOctopus is a lightweight and easy-to-use Python web framework built for learning purposes. It is a WSGI framework, meaning it can be used with any WSGI application server such as Gunicorn.
🔗 View on PyPI
🚀 Installation
Install Web-PyOctopus using pip:
pip install web-pyoctopus
📌 Basic Usage
Create a simple Web-PyOctopus app:
from pyoctopus.api import OctopusAPI
app = OctopusAPI()
@app.route("/home")
def home(request, response):
response.text = "Hello from the HOME page"
@app.route("/hello/{name}")
def greeting(request, response, name):
response.text = f"Hello, {name}!"
Run it with a WSGI server like Gunicorn:
gunicorn app:app
📚 Routing & Class-Based Views
Define class-based views for better organization:
@app.route("/book")
class BooksResource:
def get(self, req, resp):
resp.text = "Books Page"
def post(self, req, resp):
resp.text = "Endpoint to create a book"
🎨 Template Rendering
Use templates for dynamic content:
@app.route("/template")
def template_handler(req, resp):
resp.body = app.template(
"index.html", context={"name": "Web-PyOctopus", "title": "Best Framework"}
).encode()
Change the default template directory:
app = OctopusAPI(templates_dir="custom_templates")
Example index.html:
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>Welcome to {{ name }}</h1>
</body>
</html>
📂 Static Files
By default, static files are served from the static directory. You can change it:
app = OctopusAPI(static_dir="assets")
Use them in HTML:
<link href="/static/styles.css" rel="stylesheet" />
🛠 Middleware Support
Create custom middleware by inheriting from Middleware:
from pyoctopus.middleware import Middleware
class SimpleLoggerMiddleware(Middleware):
def process_request(self, req):
print("Request received:", req.url)
def process_response(self, req, res):
print("Response sent:", req.url)
app.add_middleware(SimpleLoggerMiddleware)
🧪 Unit Testing
Use pytest for testing. Fixtures app and client help in writing tests:
def test_home_route(client):
response = client.get("/home")
assert response.text == "Hello from the HOME page"
Parameterized route testing:
def test_dynamic_route(client):
response = client.get("/hello/Alice")
assert response.text == "Hello, Alice!"
📜 License
Web-PyOctopus is an open-source project for educational purposes.
🚀 Happy Coding with Web-PyOctopus! 🎉
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file web-pyoctopus-1.0.4.tar.gz.
File metadata
- Download URL: web-pyoctopus-1.0.4.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57d901868ab2ffd0aabdb2e5acd48c176942eab0bbe421267f7714f698e6a0de
|
|
| MD5 |
15a066e9e06b32de4a6b43bfa6d22765
|
|
| BLAKE2b-256 |
fce93a154dff6ed4b37c7228e8208e7677d9de85f208e1633c013f5b6b36115d
|
File details
Details for the file web_pyoctopus-1.0.4-py3-none-any.whl.
File metadata
- Download URL: web_pyoctopus-1.0.4-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97b01d07451b18d778bd566c906ab75d860687c31fe0db8d0ecd077eb62f271c
|
|
| MD5 |
9beec311177f715fa8fbc559c2d9958d
|
|
| BLAKE2b-256 |
fd906781fb93a7cd8b03603177b0943bc9c893973c6ad645be419f086ea3c559
|