ra-data-django-rest-framework-v4 v0.2.9
ra-data-django-rest-framework
react-admin data and authentication provider for Django REST framework.
ra-data-django-rest-framework includes backend and client example application and tests.
Install
npm install ra-data-django-rest-frameworkUsage
import drfProvider from 'ra-data-django-rest-framework';
const dataProvider = drfProvider("/api");Features
- Sorting
- Pagination
- Filtering
- Authentication
Sorting
Ordering for OrderingFilter is supported.
Pagination
Currently pagination with PageNumberPagination is supported.
Default PageNumberPagination has page_size_query_param set to None,
overide to be able to set Rows per page, ie:
from rest_framework.pagination import PageNumberPagination
class PageNumberWithPageSizePagination(PageNumberPagination):
page_size_query_param = 'page_size'Filtering
ra-data-django-rest-framework supports:
Authentication
tokenAuthProvider
tokenAuthProvider uses
TokenAuthentication
to obtain token from django-rest-framework. User token is saved in localStorage.
tokenAuthProvider accepts options as second argument with
obtainAuthTokenUrl key. Default URL for obtaining a token is /api-token-auth/.
fetchJsonWithAuthToken overrides httpClient and adds authorization header
with previously saved user token to every request.
import drfProvider, { tokenAuthProvider, fetchJsonWithAuthToken } from 'ra-data-django-rest-framework';
const authProvider = tokenAuthProvider()
const dataProvider = drfProvider("/api", fetchJsonWithAuthToken);jwtTokenAuthProvider
jwtTokenAuthProvider uses
JSON Web Token Authentication
to obtain token from django-rest-framework. User token is saved in localStorage.
jwtTokenAuthProvider accepts options as second argument with
obtainAuthJWTTokenUrl key. Default URL for obtaining a token is /api/token/.
fetchJsonWithAuthJWTToken overrides httpClient and adds authorization header
with previously saved user token to every request.
import drfProvider, { jwtTokenAuthProvider, fetchJsonWithAuthJWTToken } from 'ra-data-django-rest-framework';
const authProvider = jwtTokenAuthProvider()
const dataProvider = drfProvider("/api", fetchJsonWithAuthJWTToken);Example app
Django application with django-rest-framework
Setup virtual envirnoment, install requirements and load initial data:
cd example/backend
virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt
./manage.py migrate
./manage.py loaddata initialRun server:
./manage.py runserverAdmin credentials in the example app are:
admin
password
React-admin demo application
yarn install # install ra-data-django-rest-framework
cd example/client
yarn install
yarn startYou can now view example app in the browser: http://localhost:3000
Login with user admin, password is password or create new users in Django
admin dashboard or shell.
By default the rest_framework.authentication.TokenAuthentication will be
used. To use rest_framework_simplejwt.authentication.JWTAuthentication, set
the value of the REACT_APP_USE_JWT_AUTH variable in the .env
file (example/client/.env) to true, as shown below:
REACT_APP_USE_JWT_AUTH=trueContributing
This project was bootstrapped with TSDX. All features that TSDX provides should work here too.
yarn startyarn testTODO
- examples for image upload