Skip to main content

A small web framework, just big enough for a spider.

Project description

spiderweb

PyPI release version for Spiderweb Gitmoji Code style: Black

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:

  1. Learn a lot
  2. Create an unholy blend of Django and Flask
  3. 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.3.1.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

spiderweb_framework-1.3.1-py3-none-any.whl (39.4 kB view details)

Uploaded Python 3

File details

Details for the file spiderweb_framework-1.3.1.tar.gz.

File metadata

  • Download URL: spiderweb_framework-1.3.1.tar.gz
  • Upload date:
  • Size: 30.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.3 Darwin/23.5.0

File hashes

Hashes for spiderweb_framework-1.3.1.tar.gz
Algorithm Hash digest
SHA256 d763eee5b287b9f21a534e81f393669184b4933d9c4ed34566dfe93e93e7fb82
MD5 48a3349d5322d4c6e5651c8f7f42c4c8
BLAKE2b-256 00528bd908eaa8f2cee3988c930cd17f2f6822b31663fb92a9def3d779e3506d

See more details on using hashes here.

File details

Details for the file spiderweb_framework-1.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for spiderweb_framework-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9c5ad6942e8128a970f0f326c633aafba1a386f2eac02704c9a32a1eeea41ded
MD5 29e00ca6000add2cc5ebc9fae9ccf779
BLAKE2b-256 49e2853d054cb323cce56829ec9d6d6ee5d9800e83ce8cbaf4d8930dbf67a369

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page