Django Rest framework Extensions
Project description
Django REST framework Ext
Some extensions of Django REST framework.
Pagination
DynamicSizePageNumberPagination
Support setting PAGE_QUERY_PARAM
(default is page
) parameter to specify the page size for querying.
Return all data when the PAGE_QUERY_PARAM
(default is limit
) parameter is not specified.
Usage:
REST_FRAMEWORK = {
...
'DEFAULT_PAGINATION_CLASS': 'djangorestframework_ext.pagination.DynamicSizePageNumberPagination',
...
}
REST_FRAMEWORK_EXT = {
'PAGE_QUERY_PARAM': 'page', # Default is page (If not set)
'PAGE_SIZE_QUERY_PARAM': 'limit',
}
Request:
GET https://api.example.org/accounts/?page=4&limit=100
Permissions
DjangoModelPermissions
Add view
permission control.
Usage:
from djangorestframework_ext.permissions import DjangoModelPermissions
IsCurrentUser
Determine whether the object is the current login user.
Usage:
from djangorestframework_ext.permissions import IsCurrentUser
IsSuperuser
Determine whether the request user is superuser.
Usage:
from djangorestframework_ext.permissions import IsSuperuser
Serializers
RecursiveSerializer
Usage:
from rest_framework import serializers
from djangorestframework_ext.serializers import RecursiveSerializer
from django.db import models
class Department(models.Model):
name = models.CharField('Name', max_length=100)
parent = models.ForeignKey('self', related_name='children', verbose_name='Parent')
class DepartmentTreeListSerializer(serializers.ModelSerializer):
children = RecursiveSerializer(many=True)
class Meta:
model = Department
fields = '__all__'
Response:
[{
"id": 1,
"children": [{
"id": 2,
"children": [{
"id": 3,
"children": [{
"id": 4,
"children": [],
"name": "aaa",
"parent": 3
}],
"name": "ddd",
"parent": 2
}, {
"id": 5,
"children": [{
"id": 6,
"children": [],
"name": "eee",
"parent": 7
}],
"name": "xxx",
"parent": 2
}],
"name": "yyy",
"parent": 1
}],
"name": "zzz",
"parent": null
}]
ExportModelSerializer
Use verbose name or label replace field name.
Usage:
from djangorestframework_ext.serializers import ExportModelSerializer
from django.db import models
class Department(models.Model):
name = models.CharField('Name', max_length=100)
creator = models.ForeignKey(User, null=False, verbose_name='Creator')
class DepartmentExportSerializer(ExportModelSerializer):
creator = serializers.StringRelatedField(label='Creator', read_only=True)
class Meta:
model = Department
fields = ['name', 'creator']
Response:
[{
"Name": "aaa",
"Creator": "John"
}]
DynamicFieldsModelSerializer
It's copied from official document.
Mixins
MultiFieldLookupMixin
From Multiple lookup_fields for django rest framework.
Used for multi field lookup.
Usage:
views.py:
class ExampleViewSet(MultipleFieldLookupMixin, viewsets.ModelViewSet):
lookup_fields = ['pk', 'field_one', 'field_two']
urls.py:
urlpatterns = [
path(r'examples/<str:field_one>/<str:field_two>/', views.ExampleViewSet.as_view({'get': 'retrieve'}))
]
ViewSets
ExportModelViewSet
Use epxort
action and ExportPermission
to exporting data.
Utils
get_default_query_params
Get default query params.
Views
exception_handler
Some exception handlers.
Usage:
REST_FRAMEWORK = {
...
'EXCEPTION_HANDLER': 'djangorestframework_ext.views.exception_handler',
...
}
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 djangorestframework-ext-0.18.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74d9d4529cf1e2facca0dd2d28fd4d8d87ad092ce1ecabceba9a94ee4b3b7f9b |
|
MD5 | f56fa8b73e5447ef0f84ad20c8865232 |
|
BLAKE2b-256 | fcd4a3ac35271e6b6632a6008997e2095c75d188e7c6c537f268ce34db76fdba |
Hashes for djangorestframework_ext-0.18-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c43383d257c385f539e2337dd708879a72f5e624b9ba6f6114c3f1b5361a57da |
|
MD5 | b72ce075d2b8f77f458404c2a446f0b8 |
|
BLAKE2b-256 | 24f0c5be82de00ea93ff92cefaa2fce495c856b27b2356d1f2255e8afb93b8cc |