django-microapi Quick Start¶
Installation¶
The only requirement is Django (most recent releases should work fine).
$ pip install django-microapi
Usage¶
Assuming a relatively simple blog application, with an existing BlogPost
model, we can drop the following code into a views.py (or similar):
from django.contrib.auth.decorators import login_required
# We pull in two useful classes from `microapi`.
from microapi import ApiView, ModelSerializer
from .models import BlogPost
# Inherit from the `ApiView` class...
class BlogPostView(ApiView):
# ...then define `get`/`post`/`put`/`delete`/`patch` methods on the
# subclass.
# For example, we'll provide a list view on `get`.
def get(self, request):
posts = BlogPost.objects.all().order_by("-created")
# The `render` method automatically creates a JSON response from
# the provided data.
return self.render({
"success": True,
"posts": self.serialize_many(posts),
})
# And handle creating a new blog post on `post`.
@login_required
def post(self, request):
# Read the JSON
data = self.read_json(request)
# TODO: Validate the data here.
# Use the included `ModelSerializer` to load the user-provided data
# into a new `BlogPost`.
post = self.serializer.from_dict(BlogPost(), data)
# Don't forget to save!
post.save()
return self.render({
"success": True,
"post": self.serialize(post),
})
Then you can hook this up in your URLconf (urls.py) in a familiar way:
from django.urls import path
# Just import your class...
from .views import BlogPostView
urlpatterns = [
# ...then hook it up like any other CBV.
path("api/v1/posts/", BlogPostView.as_view()),
]