Examples

Views

import djburger

class ExampleView(djburger.ViewBase):
    rules = {
        'get': djburger.rule(
            controller=lambda request, data, **kwargs: 'Hello, World!',
            postvalidator=djburger.validators.constructors.IsStr,
            postrenderer=djburger.renderers.Exception(),
            renderer=djburger.renderers.Template(template_name='index.html'),
        ),
    }

Minimum info:

class ExampleView(djburger.ViewBase):
    default_rule = djburger.rule(
        controller=lambda request, data, **kwargs: 'Hello, World!',
        renderer=djburger.renderers.Template(template_name='index.html'),
    ),

All requests without the method defined in the rules will use the rule from default_rule.

Example:

class UsersView(djburger.ViewBase):
    rules = {
        'get': djburger.rule(
            decorators=[login_required, csrf_exempt],
            prevalidator=SomeValidator,
            controller=djburger.controllers.List(model=User),
            postvalidator=djburger.validators.constructors.QuerySet,
            postrenderer=djburger.renderers.Exception(),
            renderer=djburger.renderers.JSON(),
        ),
        'put': djburger.rule(
            decorators=[csrf_exempt],
            parser=djburger.parsers.JSON(),
            prevalidator=SomeOtherValidator,
            controller=djburger.controllers.Add(model=User),
            renderer=djburger.renderers.JSON(),
        ),
    }

Validators

Simple base validator:

class GroupInputValidator(djburger.validators.bases.Form):
    name = djburger.forms.CharField(label='Name', max_length=80)

djburger.forms is useful alias for django.forms.

Simple wrapper:

import djburger
from django import forms

class GroupInputForm(forms.Form):
    name = forms.CharField(label='Name', max_length=80)

Validator = djburger.validators.wrappers.Form(GroupInputForm)

See usage for more examples and explore example project.