a Django package for scaffolding django rest apis using cli
Project description
Overview
This library will help you to scaffold full Restful API Resources in seconds using only one command:
$ python manage.py dr_scaffold blog Post body:textfield author:foreignkey:Author
🎉 Your RESTful Post api resource is ready 🎉
models.py with Models and fields generated by the CLI ⚡
admin.py with Models registered and ready ⚡
views.py with appropriate ViewSets ready⚡
urls.py with appropriate URLs ready.⚡
serializers.py with Model Serializers ready ⚡
and more …
Installation and usage
For a detailed guide read scaffold django apis like a champion
This library assumes that you have setup your project with Django Rest Framework. if not, please refer to this guide
1- Install dr_scaffold package :
$ pip install dr-scaffold
2- Add dr_scaffold to your INSTALLED_APPS like this:
INSTALLED_APPS = [
...
'dr_scaffold'
]
3- If you are using a custom API structure, add CORE_FOLDER and API_FOLDER to your settings.py:
#include a forward slash at the end of each
CORE_FOLDER = "my_core_folder/" # you can leave them empty
API_FOLDER = "my_api_folder/" # or set them to be the same
4- Run the your scaffolds like this:
$ python manage.py dr_scaffold blog Post body:textfield author:foreignkey:Author --mixins CRUD
🎉 Your RESTful Post api resource is ready 🎉
Generate tests
We support generating tests for your models and apis, you can generate tests by adding –tests to your command like follow:
$ python manage.py dr_scaffold blog Author name:charfield --tests
This will generate factories for your models and their tests (ViewSets tests will be added soon), we depend on pytest and factory_boy so you should have them installed in order to run your tests.
Also bare in mind that you should run your migrations before running the tests.
Generate ViewSet Mixins
We support two types of ViewSets, we support ModelViewSet and we support ViewSets with Mixins.
ModelViewSets are the default that get generated with the dr_scaffold command
To generate a view with Mixins pass a value of what mixins you want to include like --mixins CRUD this will result in a view with the Create, List, Retrieve, Update, Destroy actions.
Let’s generate an API that does only support the Create and Read methods (Read is both list and retrieve):
$ python manage.py dr_scaffold blog Author name:charfield --mixins CR
🎉 Your RESTful Post api resource is ready 🎉
The command will generate an Author API with a ViewSet like the following:
class AuthorViewSet(
mixins.CreateModelMixin,
mixins.ListModelMixin,
mixins.RetrieveModelMixin,
viewsets.GenericViewSet
):
queryset = Author.objects.all()
serializer_class = AuthorSerializer
#permission_classes = (permissions.IsAuthenticated,)
def get_queryset(self):
#user = self.request.user
queryset = Author.objects.all()
#insert specific queryset logic here
return queryset
def get_object(self):
#insert specific get_object logic here
return super().get_object()
def create(self, request, *args, **kwargs):
serializer = AuthorSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
def list(self, request, *args, **kwargs):
queryset = self.get_queryset()
serializer = AuthorSerializer(queryset, many=True)
return Response(serializer.data)
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = AuthorSerializer(instance=instance)
return Response(serializer.data)
Supported field types
We support most of django field types.
TODO
add an option to include swagger documentation
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
File details
Details for the file dr_scaffold-2.1.2.tar.gz
.
File metadata
- Download URL: dr_scaffold-2.1.2.tar.gz
- Upload date:
- Size: 32.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38915d204ed2ea718268d5692a164ecd34e54d1e937e76fc586cd0b41417446c |
|
MD5 | 66681269b5ce3ebff87aaec97de92658 |
|
BLAKE2b-256 | 35b0fcc766a26a34cf608b82921ce87754981d0e711a472d4a8aa009a9cb7f14 |
File details
Details for the file dr_scaffold-2.1.2-py3-none-any.whl
.
File metadata
- Download URL: dr_scaffold-2.1.2-py3-none-any.whl
- Upload date:
- Size: 33.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4dcb62b3d45ab9c060425f81ab41ea315b59a12e08445492dbd893e2a9d1047 |
|
MD5 | 9217f3ea84deb6b314f37d7345f548f0 |
|
BLAKE2b-256 | 26d2d07abc48cc95a48ca49024f6bc710cf19e4c553036df1c4f677745e4c0d2 |