A package to generate CRUD endpoints for registered models with the Django-REST Framework.
Project description
This is a fork of BdVade/DRF-admin project
This repo has been renamed in order to avoid confusions with BdVade/DRF-admin and will be mantained by myself.
Any contribution and feature requests are welcome!
dj-rest-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
- Add rest_admin.py in your app dirs for defining RestModelAdmin
- Import dj_rest_admin in the rest_admin.py
- Call
dj_rest_admin.site.register(Model)
Model being the model to register - Add rest admin to your urls.py file.
- [Optional] Add
dj_rest_admin
to yourINSTALLED_APPS
for admin autodiscover.
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 dj_rest_admin
dj_rest_admin.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 ofRestModelAdmin
permission_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 :
dj_rest_admin.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 dj_rest_admin 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 dj_rest_admin 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for dj_rest_admin-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1b15dd5c98ea7b941be9850cb866cc0bcac9af78ee67aacfde0fcb6278fc96b |
|
MD5 | 34b3135dc0325652971a1c97ec9ccf1a |
|
BLAKE2b-256 | 127d9ff107bec83f868ac9f0e10089cb65e7900ab01e6be81973e412c8d7e062 |