A small web framework, just big enough for a spider.
Project description
spiderweb
As a professional web developer focusing on arcane uses of Django for arcane purposes, it occurred to me a little while ago that I didn't actually know how a web framework worked.
So I built one.
spiderweb
is a small web framework, just big enough to hold a spider. Getting started is easy:
poetry add spiderweb-framework
Create a new file and drop this in it:
from spiderweb import SpiderwebRouter
from spiderweb.response import HttpResponse
app = SpiderwebRouter()
@app.route("/")
def index(request):
return HttpResponse("HELLO, WORLD!")
if __name__ == "__main__":
app.start()
View the docs here!
My goal with this framework was to do three things:
- Learn a lot
- Create an unholy blend of Django and Flask
- Not look at any existing code. Go off of vibes alone and try to solve all the problems I could think of in my own way
And, honestly, I think I got there. Here's a non-exhaustive list of things this can do:
- Function-based views
- Optional Flask-style URL routing
- Optional Django-style URL routing
- URLs with variables in them a lá Django
- Full middleware implementation
- Limit routes by HTTP verbs
- Custom error routes
- Built-in dev server
- Gunicorn support
- HTML templates with Jinja2
- Static files support
- Cookies (reading and setting)
- Optional append_slash (with automatic redirects!)
- CSRF middleware
- CORS middleware
- Optional POST data validation middleware with Pydantic
- Session middleware with built-in session store
- Database support (using Peewee, but you can use whatever you want as long as there's a Peewee driver for it)
- Tests (currently roughly 89% coverage)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
spiderweb_framework-1.2.1.tar.gz
(30.2 kB
view hashes)
Built Distribution
Close
Hashes for spiderweb_framework-1.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9bf8e94d2b92ac071164b304e66c7ffd08d4322e9f03232c0579720e8bfa27a |
|
MD5 | 47eb6b5423c58631be9ceb0cc4c29e0a |
|
BLAKE2b-256 | dd31e26cbfbfa3cb13fb17d3b65a93127ea5a3b6d1a42bc81bec3621da04f644 |
Close
Hashes for spiderweb_framework-1.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 337d1821433bd263a5cd64f99f1a0122702ab3e7a2d2b813fb3c1b64e544a6b7 |
|
MD5 | 749bd8c7a582ceecc81c7027e8cd8a52 |
|
BLAKE2b-256 | ea461f6bb0b4a7f6fd44d797392f5951ef1a562b270c3e5bbed9da0bfa6ebad2 |