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 🎉
Supported ViewSet types
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
Hashes for dr_scaffold-2.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46a517858a64fe42cc3f1d6c3cdcf8e49b2a650aec9a624e94b8aee54bfbde77 |
|
MD5 | df42868d2df42a1095fddcc45c01a0bc |
|
BLAKE2b-256 | a36938f2ebcceb8eb6d9f46e6fb674ac59f7a5859a3e6c4310526da989627c08 |