DRF-admin
DRF-admin copied to clipboard
A package to generate CRUD endpoints for registered models with the Django-REST Framework.
DRF-Admin
A package to generate CRUD endpoints for registered models with the Django-REST Framework.
Requirements
Installation
To install run:
pip install drf-admin
Usage
- Import restadmin in the admin.py
- Call
restadmin.site.register(Model)Model being the model to register - Add rest admin to your urls.py file
Prerequisite
- rest_framework should be properly set up to use this package hitch free
A sample of it's configuration in the settings file:
REST_FRAMEWORK={
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
'TEST_REQUEST_RENDERER_CLASSES': [
'rest_framework.renderers.MultiPartRenderer',
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.TemplateHTMLRenderer', ],
"DEFAULT_AUTHENTICATION_CLASSES": [
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication'
],
"DEFAULT_PERMISSION_CLASSES": [
'rest_framework.permissions.AllowAny',
]
}
For example:
models.py
from django.db import models
class TestModel(models.Model):
age = models.IntegerField()
admin.py
from .models import TestModel
import restadmin
restadmin.site.register(TestModel)
urls.py
from restadmin import site
from django.urls import path
urlpatterns = [
...
path('restadmin/', site.urls),
...
]
Customization
This package allows you to specify the following when registering your model
serializer_or_modeladmin: A Model Serializer Class or a subclass ofRestModelAdminpermission_classes: A list of Permission classespagination_classs: A Pagination Class
An example of how a call to the register method with all 3 would look is :
restadmin.site.register(TestModel, serializer_or_modeladmin=AdminSerializer, permission_classes=[ReadOnly],
pagination_class=LargeResultsSetPagination)
RestModelAdmin expose the same interface as ModelViewSet so you can add the whole customizations that
ModelViewSet offers. This includes:
- Custom querysets
- redifining defaults methods
- add actions as ModelViewSet's exta actions
You can also register models with the register decorator
Example:
from restadmin import register, RestModelAdmin
from .models import TestModel
@register(TestModel)
class TestRestModelAdmin(RestModelAdmin):
serializer_class = MyCustomSerializer # Optional. A default is provided if None defined
def get_queryset(self):
queryset = TestModel.objects.filter(age__lt=30)
return queryset
Endpoint Documentation
- This requires you to have coreapi installed
A page to document the Endpoints generated can be accessed by adding the following to your base urls file
from restadmin import site
urlpatterns = [
...
path('restadmin-docs/', site.docs)
...
]
Using this would require you to have your default schema Class set in your REST_FRAMEWORK config in your settings.py file E.g
REST_FRAMEWORK = { 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema' }
Run your server and you can find the documentation at http://127.0.0.1:8000/restadmin-docs
NOTE: The Documentation page is restricted to staff only(is_staff has to be True)
Tests
To run the tests:
From the base directory run :
python load_tests.py