drf-generators の紹介


DRF を使ってると毎回 モデルごとの View, Serializer, urls 書いて面倒くさくないですか?
そんなときに drf-generators !

定義されているモデルの View, Serializer, urls を生成してくれます.

install

pip install drf-generators

usage

python manage.py generate {app} {options}

generate コマンドに app名 と option を指定します.

オプションを指定しなければ serializers.py, views.py, urls.py が生成されます.

$ python manage.py generate articles
  - writing serializers.py
  - writing views.py
  - writing urls.py

option を指定すると view や serializer だけを生成することもできます.

また option の --format では view の フォーマットを指定できます.
例えば, 以下のような APIView を継承したクラスで view を作成したい場合は --format apiView ,
ModelViewSet を使用したい場合は --format modelviewset のように指定します.

format は 2019-12-04時点ではバグがあり正しく動きません 修正PRでてます

class ArticleAPIView(APIView):

    def get(self, request, id, format=None):
        try:
            item = Article.objects.get(pk=id)
            serializer = ArticleSerializer(item)
            return Response(serializer.data)
        except Article.DoesNotExist:
            return Response(status=404)

    def put(self, request, id, format=None):
        try:
            item = Article.objects.get(pk=id)
        except Article.DoesNotExist:
            return Response(status=404)
        serializer = ArticleSerializer(item, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=400)

    def delete(self, request, id, format=None):
        try:
            item = Article.objects.get(pk=id)
        except Article.DoesNotExist:
            return Response(status=404)
        item.delete()
        return Respon

テンプレートをカスタマイズしたい

drf を普段から使用している人は, カスタマイズした Serializer や ViewSet を使ってたりすると思います.

テンプレートを書き換えられる PR がでてるのでもうしばらく待ちましょう.