Making using Django with frontend libraries and frameworks DRYer
Project description
# DRF-schema-adapter [![Build Status](https://travis-ci.org/drf-forms/drf-schema-adapter.svg?branch=master)](https://travis-ci.org/drf-forms/drf-schema-adapter)
`drf-schema-adapter` is a set of tools used to make it as straight-forward to declare an API endpoint
as it is to declare a new `ModelAdmin` in Django and export the corresponding definition to frontend
frameworks and libraries.
## Compatibility Matrix
**DRF-schema-adapter** is compatible with the following matrix
| | Py 2.7 | Py 3.4 | Py 3.5 | Py 3.6 |
| --------------- | ----------- | ----------- | ----------- | ----------- |
| **Django 1.8** | DRF 3.3-3.6 | DRF 3.3-3.6 | DRF 3.3-3.6 | DRF 3.3-3.6 |
| **Django 1.9** | DRF 3.3+ | DRF 3.3+ | DRF 3.3+ | DRF 3.3+ |
| **Django 1.10** | DRF 3.4+ | DRF 3.4+ | DRF 3.4+ | DRF 3.4+ |
| **Django 1.11** | DRF 3.4+ | DRF 3.4+ | DRF 3.4+ | DRF 3.4+ |
| **Django 2.0** | No | No | DRF 3.7+ | DRF 3.7+ |
:warning: For DRF 3.2, (Django 1.8 only), use version 0.9.56 or prior
## Installation
### With pip
`pip install drf-schema-adapter`
### From source
Within the source directory:
`python setup.py install`
## Demo application
You can see a demo application running at
[https://djembersample.pythonanywhere.com/](https://djembersample.pythonanywhere.com/).
## Basic usage
First of all you'll need to import the default EndpointRouter in your urls.py file.
`from drf_auto_endpoint.router import router`
As well as add its urls to your `urlpatterns` in `urls.py`, the same way you would with DRF's
`DefaultRouter`.
```
urlpatterns = [
...
url(r'^api/', include(router.urls)),
...
]
```
### Prototyping
The quickest way to get a working endpoint is to register a model with the router. Register accepts
an optional keyword argument for the `url` associated to that endpoint. By default the url for an
endpoint willbe `app_label/verbose_name_plural`
```
from drf_auto_endpoint.router import router
from my_app.models import MyModel, OtherModel
router.register(MyModel)
router.register(OtherModel, url='my_custom_url')
urlpatterns = [
url(r'^api/', include(router.urls)),
]
```
### Adding schema information to your `OPTIONS` calls
Django REST framework provides the ability to customize those calls thanks to
[metadata classes](http://www.django-rest-framework.org/api-guide/metadata/).
Setup DRF to use one of **DRF-schema-adapter**'s metadata classes to get schema information:
```
## settings.py
...
REST_FRAMEWORK = {
'DEFAULT_METADATA_CLASS': 'drf_auto_endpoint.metadata.AutoMetadata',
}
```
### Exporting to the frontend
First add `'export_app'` to your setting's `INSTALLED_APPS`, then run:
`./manage.py export --adapter_name EmberAdapter samples/products`
## Full documentation
For much more complete documentation, please see: http://drf-schema-adapter.readthedocs.io
## Related projects
- Django:
- [Django Rest Framework](http://www.django-rest-framework.org/)
- [DRF-Base64](https://bitbucket.org/levit_scs/drf_base64)
- Ember:
- [ember-cli-dynamic-model](https://bitbucket.org/levit_scs/ember-cli-dynamic-model)
- [ember-cli-crudities](https://bitbucket.org/levit_scs/ember-cli-crudities)
- Angular:
- [angular-formly](http://angular-formly.com/)
- React:
_nothing so far_
- Third-party adapters:
_nothing so far_
## Contibuting guide-lines
If you'd like to contibute to *DRF-schema-adapter**, you are more than welcome to do so. In order to
make contributing to this project a rich experience for everyone, please follow these guide-lines:
- First, fork the project with your own GitHub account, build your code on your own repository and
submit a pull-request once your contribution is ready.
- Before contributing a bug-fix or new feature, create an issue explaining what the problem/need is
first. When submitting your pull-request, make sure to reference the original issue.
- For any code you contribute, make sure to follow PEP8 recommendation (soft line-limit 100, hard
limit 120).
- For bug-fixes, please first write a test that will fail with the current code and passes using your
patch. For easier evaluation, please do so in 2 separate commits
- For new features, if your feature can be implemented as a third-party app (like new adapters), please
don't contribute them to this repo, publish your own application and open an issue telling us about it.
We will make sure to add a link to your application in this README.
- Read and respect the [Code Of Conduct](./COC.md)
## ToDo
- [ ] Write better documentation
- [ ] Write more/better tests
- [X] Enable admin-like registration mechanism
- [X] Add languages information when django-model-translation is installed
---
License information available [here](LICENSE.md).
Contributors code of conduct is available [here](COC.md). Note that this COC **will** be enforced.
`drf-schema-adapter` is a set of tools used to make it as straight-forward to declare an API endpoint
as it is to declare a new `ModelAdmin` in Django and export the corresponding definition to frontend
frameworks and libraries.
## Compatibility Matrix
**DRF-schema-adapter** is compatible with the following matrix
| | Py 2.7 | Py 3.4 | Py 3.5 | Py 3.6 |
| --------------- | ----------- | ----------- | ----------- | ----------- |
| **Django 1.8** | DRF 3.3-3.6 | DRF 3.3-3.6 | DRF 3.3-3.6 | DRF 3.3-3.6 |
| **Django 1.9** | DRF 3.3+ | DRF 3.3+ | DRF 3.3+ | DRF 3.3+ |
| **Django 1.10** | DRF 3.4+ | DRF 3.4+ | DRF 3.4+ | DRF 3.4+ |
| **Django 1.11** | DRF 3.4+ | DRF 3.4+ | DRF 3.4+ | DRF 3.4+ |
| **Django 2.0** | No | No | DRF 3.7+ | DRF 3.7+ |
:warning: For DRF 3.2, (Django 1.8 only), use version 0.9.56 or prior
## Installation
### With pip
`pip install drf-schema-adapter`
### From source
Within the source directory:
`python setup.py install`
## Demo application
You can see a demo application running at
[https://djembersample.pythonanywhere.com/](https://djembersample.pythonanywhere.com/).
## Basic usage
First of all you'll need to import the default EndpointRouter in your urls.py file.
`from drf_auto_endpoint.router import router`
As well as add its urls to your `urlpatterns` in `urls.py`, the same way you would with DRF's
`DefaultRouter`.
```
urlpatterns = [
...
url(r'^api/', include(router.urls)),
...
]
```
### Prototyping
The quickest way to get a working endpoint is to register a model with the router. Register accepts
an optional keyword argument for the `url` associated to that endpoint. By default the url for an
endpoint willbe `app_label/verbose_name_plural`
```
from drf_auto_endpoint.router import router
from my_app.models import MyModel, OtherModel
router.register(MyModel)
router.register(OtherModel, url='my_custom_url')
urlpatterns = [
url(r'^api/', include(router.urls)),
]
```
### Adding schema information to your `OPTIONS` calls
Django REST framework provides the ability to customize those calls thanks to
[metadata classes](http://www.django-rest-framework.org/api-guide/metadata/).
Setup DRF to use one of **DRF-schema-adapter**'s metadata classes to get schema information:
```
## settings.py
...
REST_FRAMEWORK = {
'DEFAULT_METADATA_CLASS': 'drf_auto_endpoint.metadata.AutoMetadata',
}
```
### Exporting to the frontend
First add `'export_app'` to your setting's `INSTALLED_APPS`, then run:
`./manage.py export --adapter_name EmberAdapter samples/products`
## Full documentation
For much more complete documentation, please see: http://drf-schema-adapter.readthedocs.io
## Related projects
- Django:
- [Django Rest Framework](http://www.django-rest-framework.org/)
- [DRF-Base64](https://bitbucket.org/levit_scs/drf_base64)
- Ember:
- [ember-cli-dynamic-model](https://bitbucket.org/levit_scs/ember-cli-dynamic-model)
- [ember-cli-crudities](https://bitbucket.org/levit_scs/ember-cli-crudities)
- Angular:
- [angular-formly](http://angular-formly.com/)
- React:
_nothing so far_
- Third-party adapters:
_nothing so far_
## Contibuting guide-lines
If you'd like to contibute to *DRF-schema-adapter**, you are more than welcome to do so. In order to
make contributing to this project a rich experience for everyone, please follow these guide-lines:
- First, fork the project with your own GitHub account, build your code on your own repository and
submit a pull-request once your contribution is ready.
- Before contributing a bug-fix or new feature, create an issue explaining what the problem/need is
first. When submitting your pull-request, make sure to reference the original issue.
- For any code you contribute, make sure to follow PEP8 recommendation (soft line-limit 100, hard
limit 120).
- For bug-fixes, please first write a test that will fail with the current code and passes using your
patch. For easier evaluation, please do so in 2 separate commits
- For new features, if your feature can be implemented as a third-party app (like new adapters), please
don't contribute them to this repo, publish your own application and open an issue telling us about it.
We will make sure to add a link to your application in this README.
- Read and respect the [Code Of Conduct](./COC.md)
## ToDo
- [ ] Write better documentation
- [ ] Write more/better tests
- [X] Enable admin-like registration mechanism
- [X] Add languages information when django-model-translation is installed
---
License information available [here](LICENSE.md).
Contributors code of conduct is available [here](COC.md). Note that this COC **will** be enforced.
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
drf-schema-adapter-0.9.66.tar.gz
(29.2 kB
view hashes)
Close
Hashes for drf-schema-adapter-0.9.66.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13df7697c1a6bcc5ec9b60c3846cd8cf9ccd533f1dd7e8243430c25229aa1c45 |
|
MD5 | ad44f869b41a67787a25bfac12b4499c |
|
BLAKE2b-256 | 9c29f18dfc8cb7f265674e242623b86e945e504dac9aa33fa8028d9d42ef1021 |