Skip to main content

Django REST Framework-style viewsets for FastAPI, with optional Celery-backed async execution and a Vue/TypeScript client counterpart.

Project description

DynamicForms FastAPI Viewsets

Django REST Framework-style viewsets for FastAPI, with optional Celery-backed async execution and a matching Vue/TypeScript client counterpart.

  • Python mixins for FastAPI — compose CRUD and bulk endpoints from small, focused mixin classes.
  • route_viewset decorator — register a viewset on a FastAPI router with a single decorator call. Handles type resolution, lifecycle management and OpenAPI schema automatically.
  • CollectionViewSet — zero-boilerplate in-memory viewset backed by any Python list, set or dict. Great for prototyping and testing.
  • CeleryViewSet — delegate all CRUD operations to Celery tasks, for long-running or background processing scenarios (requires the celery extra).
  • Bulk operations — first-class support for bulk create, update, partial update and destroy.
  • Vue / TypeScript counterpart — mirror mixin classes and a route_rest factory give you a fully typed HTTP client that matches your backend viewset exactly (published separately as @dynamicforms/fastapi-viewsets on npm).

Installation

pip install dynamicforms-fastapi-viewsets

# with Celery-backed viewset support
pip install "dynamicforms-fastapi-viewsets[celery]"

Requires Python 3.10+, FastAPI and Pydantic v2.

Quick example

from fastapi import APIRouter, FastAPI
from pydantic import BaseModel

from fastapi_viewsets.collection_viewset import CollectionViewSet
from fastapi_viewsets.decorators.route_viewset import route_viewset
from fastapi_viewsets.mixins import BulkViewSetMixin


class Item(BaseModel):
    id: int
    name: str


database: dict[int, Item] = {1: Item(id=1, name="First element")}

app = FastAPI()
router = APIRouter()


@route_viewset(router, base_path="/items", pk_field_name="id")
class ItemViewSet(CollectionViewSet[int, Item], BulkViewSetMixin[int, Item]):
    def __init__(self):
        super().__init__(container=database, pk_field="id")


app.include_router(router)

See the full documentation for guides on the mixin system, route_viewset, CollectionViewSet, CeleryViewSet, and the Vue client.

License

MIT — see LICENSE.

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

dynamicforms_fastapi_viewsets-0.1.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dynamicforms_fastapi_viewsets-0.1.0-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file dynamicforms_fastapi_viewsets-0.1.0.tar.gz.

File metadata

File hashes

Hashes for dynamicforms_fastapi_viewsets-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9613060f947cea03b74d5fca1d0e23ec2973bb544f4a4b181ec4db0e43163864
MD5 84e29881c97c51bb508d20f9165197ea
BLAKE2b-256 d00a58786864a5f1a4a8a019204b9bd4ba1eaf1295c1ce76c7008da067b427bf

See more details on using hashes here.

File details

Details for the file dynamicforms_fastapi_viewsets-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dynamicforms_fastapi_viewsets-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3dea03c459d6923b8d3085e51aa52af6e393dd916fab38b9f4e89ba8ef103fbb
MD5 2da46921a63391a2cd4359a9c6c808d4
BLAKE2b-256 e23851addd9b475db37ba95174da78f1e6de233ef66254cde9a9dbce9c348407

See more details on using hashes here.

Supported by

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