{ "info": { "author": "Tobin Brown", "author_email": "tobin@brobin.me", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django :: 1.10", "Framework :: Django :: 1.9", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP" ], "description": "==============\nDRF Generators\n==============\n\nWriting APIs can be boring and repetitive work. Don't write another CRUDdy view in `Django Rest Framework `_. With DRF Generators, one simple command will generate all of your Views, Serializers, and even Urls for your Django Rest Framework application!\n\nFor a full step-by-step tutorial, check out my `blog post `_!\n\nThis is **not** intended to give you a production quality API. It was intended to jumpstart your development and save you from writing the same code over and over for each model.\n\n---------------\n\n|python| |pypi| |license| |travis| |django| |drf|\n\n---------------\n\n* `Installation`_\n* `Usage`_\n* `Serializers`_\n* `Views`_\n* `Urls`_\n* `Tests`_\n* `License`_\n\n---------------\n\n============\nInstallation\n============\n\nInstall with pip:\n\n.. code-block:: bash\n\n $ pip install drf-generators\n\nor Clone the repo and install manually:\n\n.. code-block:: bash\n\n $ git clone https://github.com/brobin/drf-generators.git\n $ cd drf-generators\n $ python setup.py install\n\nTo use DRF Generators, add it your INSTALLED_APPS.\n\n.. code-block:: python\n\n INSTALLED_APPS = (\n ...\n 'rest_framework',\n 'drf_generators',\n ...\n )\n\n*Note*: In order to use the APIView classes, you must have the rest framework DEFAULT_PAGINATION_CLASS and PAGE_SIZE set.\n\n.. code-block:: python\n\n REST_FRAMEWORK = {\n 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',\n 'PAGE_SIZE': 15\n }\n\n-----------------\n\n=====\nUsage\n=====\n\nTo use the generators, run the following command, where ``app`` is the application to generate an API for.\n\n.. code-block:: bash\n\n $ python manage.py generate {app} {options}\n\n========================== ===================================================\nOption Action\n========================== ===================================================\n``--serializers`` Generate only Serializers for your app.\n``--views`` Generate only Views for your app.\n``--urls`` Generate only urls for your app.\n``--force`` Overwrite existing files without the warning prompt.\n``-f``, ``--format`` Format to use when generating views and urls. Valid options: ``viewset``, ``apiview``, ``function``, ``modelviewset``. Default: ``viewset``.\n``-d``, ``--depth`` Serialization depth for related models. Default: 0\n========================== ===================================================\n\n**Example:** Generate everything for the app ``api`` with function style views, overwriting existing files, with a serialization depth of 2.\n\n.. code-block:: bash\n\n $ python manage.py generate api --format function --force -- depth=2\n\n-------------------\n\n===========\nSerializers\n===========\n\nDrf Generators will create ``serializers.py`` for your application. It currently uses rest framework's ``ModelSerializer`` for serialization of the models defined in ``models.py``.\n\n.. code-block:: python\n\n class ModelSerializer(serializers.ModelSerializer):\n\n class Meta:\n model = User\n\n------------------\n\n=====\nViews\n=====\n\nDRF Generators will create ``views.py`` for your application. It can generate ``ViewSet``, ``APIView`` and function based views. Set the ``--format`` option when running the generator to pick the preferred style\n\n-------\nViewSet\n-------\n\n``python manage.py generate api --format viewset``\n\n.. code-block:: python\n\n class ModelViewSet(ViewSet):\n\n def list(self, request):\n ...\n def create(self, request):\n ...\n def retrieve(self, request, pk=None):\n ...\n def update(self, request, pk=None):\n ...\n def destroy(self, request, pk=None):\n ...\n\n-------\nAPIView\n-------\n\n``python manage.py generate api --format apiview``\n\n.. code-block:: python\n\n class ModelAPIView(APIView):\n\n def get(self, request, id, format=None):\n ...\n def put(self, request, id, format=None):\n ...\n def delete(self, request, id, format=None):\n ...\n\n class ModelAPIListView(APIView):\n\n def get(self, request, format=None):\n ...\n def post(self, request, format=None):\n ...\n\n--------\nFunction\n--------\n\n``python manage.py generate api --format function``\n\n.. code-block:: python\n\n @api_view(['GET', 'POST'])\n def model_list(request):\n if request.method == 'GET':\n ...\n elif request.method == 'POST':\n ...\n\n @api_view(['GET', 'PUT', 'DELETE'])\n def model_detail(request, pk):\n if request.method == 'GET':\n ...\n elif request.method == 'PUT':\n ...\n elif request.method == 'DELETE':\n ...\n\n-------------\nModelViewSet\n-------------\n\n``python manage.py generate api --format modelviewset``\n\n.. code-block:: python\n\n class MyModelViewSet(ModelViewSet):\n queryset = MyModel.objects.all()\n serializer_class = MyModelSerializer\n\n-----------------\n\n====\nUrls\n====\n\nFinally, DRF Generator will create you a default ``urls.py`` to match the View format you are using.\n\n----------------------------\nViewSet & ModeViewSet Routes\n----------------------------\n\n.. code-block:: python\n\n router = SimpleRouter()\n\n router.register(r'model', views.ModelViewSet, 'Model')\n\n urlpatterns = router.urls\n\n------------\nAPIView urls\n------------\n\n.. code-block:: python\n\n url(r'^model/([0-9]+)$', views.ModelAPIView.as_view()),\n url(r'^model', views.ModelAPIListView.as_view()),\n\n-------------\nFunction urls\n-------------\n\n.. code-block:: python\n\n urlpatterns = [\n\n url(r'^model/(?P[0-9]+)$', views.model_detail),\n url(r'^model/$', views.model_list),\n\n ]\n\n urlpatterns = format_suffix_patterns(urlpatterns)\n\n\n=====\nTests\n=====\n\nA full application built with drf-generators can be found in the `tests directory `_. Instructions on running the tests can be found in the test project's README.\n\n\n=======\nLicense\n=======\n\nMIT License. See `LICENSE `_.\n\n\n.. |python| image:: https://img.shields.io/pypi/v/drf-generators.svg?style=flat-square\n :target: https://pypi.python.org/pypi/drf-generators/\n :alt: Supported Python versions\n\n.. |pypi| image:: https://img.shields.io/pypi/pyversions/drf-generators.svg?style=flat-square\n :target: https://pypi.python.org/pypi/drf-generators/\n :alt: Latest Version\n\n.. |license| image:: https://img.shields.io/pypi/l/drf-generators.svg?style=flat-square\n :target: https://pypi.python.org/pypi/drf-generators/\n :alt: License\n\n.. |travis| image:: https://img.shields.io/travis/Brobin/drf-generators.svg?style=flat-square\n :target: https://travis-ci.org/Brobin/drf-generators/\n :alt: Travis CI\n\n.. |django| image:: https://img.shields.io/badge/Django-1.9, 1.10-orange.svg?style=flat-square\n :target: http://djangoproject.com/\n :alt: Django 1.9, 1.10\n\n.. |drf| image:: https://img.shields.io/badge/DRF-3.5-orange.svg?style=flat-square\n :target: http://www.django-rest-framework.org/\n :alt: DRF 3.5", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/brobin/drf-generators/archive/0.4.0.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/brobin/drf-generators", "keywords": "API REST framework generate scaffold", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "drf-generators", "package_url": "https://pypi.org/project/drf-generators/", "platform": "", "project_url": "https://pypi.org/project/drf-generators/", "project_urls": { "Download": "https://github.com/brobin/drf-generators/archive/0.4.0.zip", "Homepage": "https://github.com/brobin/drf-generators" }, "release_url": "https://pypi.org/project/drf-generators/0.4.0/", "requires_dist": null, "requires_python": "", "summary": "Generate DRF Serializers, Views, and urls for your API application.", "version": "0.4.0" }, "last_serial": 4936134, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "1a7da2f029d4c6a5d6c9ce1d24dcd00e", "sha256": "55e7db97e5bca3798fcd37323878a966a7e1f5f6daf29f729ff610cb51e3e44d" }, "downloads": -1, "filename": "drf-generators-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1a7da2f029d4c6a5d6c9ce1d24dcd00e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4214, "upload_time": "2015-04-07T06:17:41", "url": "https://files.pythonhosted.org/packages/9f/af/0dfdbe396f2ddc62ef3b09f7893dcc8c9c3016a088fd2e201ab57ebc304a/drf-generators-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e0f2685937eb47498a58bde1f3303886", "sha256": "d0b2144e5885e95b16e09780937929530970bc8238e709526a01076e76cd08eb" }, "downloads": -1, "filename": "drf-generators-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e0f2685937eb47498a58bde1f3303886", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4666, "upload_time": "2015-04-07T15:32:12", "url": "https://files.pythonhosted.org/packages/24/8a/19b7e77efc3ff72d8df03d26b3f529a1ee07b15436a9b4d42daf258d6cad/drf-generators-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "ba616a593ec6bd5311fbe166beb8af14", "sha256": "0b4d1328c421031e8664e2061ed5ed7a6264f632caf0d3477524d4d199f4ba42" }, "downloads": -1, "filename": "drf-generators-0.1.4.tar.gz", "has_sig": false, "md5_digest": "ba616a593ec6bd5311fbe166beb8af14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5158, "upload_time": "2015-04-07T18:24:13", "url": "https://files.pythonhosted.org/packages/91/4b/24171cf187d48d08c1ac0a50767858621a599302a75e3c7ad8e61b2a0327/drf-generators-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "b4ac877a119fc4f4285f7b36472deb0d", "sha256": "8581df90cfbbd7239a151bbc9faf4ff1816f5c71bf6f40327655edc0d1be57ec" }, "downloads": -1, "filename": "drf-generators-0.1.5.tar.gz", "has_sig": false, "md5_digest": "b4ac877a119fc4f4285f7b36472deb0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5544, "upload_time": "2015-04-08T21:19:00", "url": "https://files.pythonhosted.org/packages/ec/2f/3605106e4e43a1c46c2aafb06bc666452d524f685a0eb9c9465409d98e18/drf-generators-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "ca6921620b1bbbe8f47733fbb82a6e89", "sha256": "4deb3723df740675a836c4abfc89bd1246df6df3876d82d2cc66dbd45c61535a" }, "downloads": -1, "filename": "drf-generators-0.1.6.tar.gz", "has_sig": false, "md5_digest": "ca6921620b1bbbe8f47733fbb82a6e89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5634, "upload_time": "2015-04-08T23:50:26", "url": "https://files.pythonhosted.org/packages/41/04/d658ec7f37ecadd5568235b44b7f88c85714c0967898631ca5310e425a3d/drf-generators-0.1.6.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "d1c797953ce589eb0f4b03e20d0382f0", "sha256": "e5bc8fa5191dd8e60a4ff817081a591fb92bf4036a27a3db86c065739822f5b6" }, "downloads": -1, "filename": "drf-generators-0.2.tar.gz", "has_sig": false, "md5_digest": "d1c797953ce589eb0f4b03e20d0382f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6541, "upload_time": "2015-04-09T20:06:32", "url": "https://files.pythonhosted.org/packages/1f/8b/ac5af0a2b6bfadb7cd855347e0c0eac8ec130ae09691e79bfe2d779e5949/drf-generators-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "b7306179eb6f874bbbd7e0584ef46e14", "sha256": "b7f9bcbecdd605300ae5d67057e287a6723bb700fb0aaf5182e307c9ee20f65e" }, "downloads": -1, "filename": "drf-generators-0.2.1.tar.gz", "has_sig": false, "md5_digest": "b7306179eb6f874bbbd7e0584ef46e14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6935, "upload_time": "2015-04-10T19:35:22", "url": "https://files.pythonhosted.org/packages/25/b9/1524af9dc3cc6278f4c04c748c1c160488bb465e89fec86d61cf8858bf7c/drf-generators-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "3330c08a49032eef7a7f4f7e738ef6c8", "sha256": "ceda14d1ff3d3630805661508b74dde21f8f098f8085d90ba5386cb0a24eb89f" }, "downloads": -1, "filename": "drf-generators-0.2.2.tar.gz", "has_sig": false, "md5_digest": "3330c08a49032eef7a7f4f7e738ef6c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7143, "upload_time": "2015-04-11T20:33:47", "url": "https://files.pythonhosted.org/packages/94/a4/08e2a0e99bf91cfd77389a4824e09fb4814d8b48374097c7a6a012678da1/drf-generators-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "42207d9ec70b698cbe0cc321732dfa5b", "sha256": "3c71dc002768134a7c36bce84e548dfde41e1452ba2ea6b619aa40fb16c313fa" }, "downloads": -1, "filename": "drf-generators-0.2.3.tar.gz", "has_sig": false, "md5_digest": "42207d9ec70b698cbe0cc321732dfa5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7269, "upload_time": "2015-04-19T06:41:36", "url": "https://files.pythonhosted.org/packages/95/55/b79cb9f5d5b04a332bb7954679c02f93de88dc96b2ccb978907d153a22e3/drf-generators-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "4fe848dfe0a7b8c1e45c3bef035c2e0e", "sha256": "bf7e0fe2c501e9741cbe4869034b67e97d9c19c4ded8b02dd80e802a6a3aed89" }, "downloads": -1, "filename": "drf-generators-0.2.4.tar.gz", "has_sig": false, "md5_digest": "4fe848dfe0a7b8c1e45c3bef035c2e0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7386, "upload_time": "2015-04-30T16:13:04", "url": "https://files.pythonhosted.org/packages/0f/6d/adf9e0a58e881f141548b8ec73028083ec7a2f7dd25c7a7459abbae301a1/drf-generators-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "aa469fea0d474e0fbe3304f9264dbb60", "sha256": "3b93552f1e7af76f2ea3804bf0fb12788ccb92c8e005c286c01fea8b20527f7f" }, "downloads": -1, "filename": "drf-generators-0.2.5.tar.gz", "has_sig": false, "md5_digest": "aa469fea0d474e0fbe3304f9264dbb60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8649, "upload_time": "2015-08-24T18:04:10", "url": "https://files.pythonhosted.org/packages/d8/d9/8b6c4c8e090ab54aa444f9c5c8e96f5e836f7d616ba4631a3d67e6158eb4/drf-generators-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "ecf4115bca8f5b903f6fb418a233bbed", "sha256": "42932a2e1d0424eef72f592cdcd4d818588dcc60e0b805635656c819a492a859" }, "downloads": -1, "filename": "drf-generators-0.2.6.tar.gz", "has_sig": false, "md5_digest": "ecf4115bca8f5b903f6fb418a233bbed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8694, "upload_time": "2015-09-20T16:36:12", "url": "https://files.pythonhosted.org/packages/48/56/468a05594b7f9be302024aa958c950f0f47c249f79fb64917e8039fbc8ec/drf-generators-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "f374440ebc3e0188dcb111b43b71a2ac", "sha256": "f127b018959e33268fc90b5b348de644c80cf316f842897a39cc4481e04c98ac" }, "downloads": -1, "filename": "drf-generators-0.2.7.tar.gz", "has_sig": false, "md5_digest": "f374440ebc3e0188dcb111b43b71a2ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8667, "upload_time": "2015-10-13T16:17:46", "url": "https://files.pythonhosted.org/packages/a3/c2/ff0235f16bb66f453d62026ab0d7bb57cbfe9c97bac31de6dea5b690a93d/drf-generators-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "682422907913ed4fbe9e938c25d5e48e", "sha256": "23b1d5142c2ad3ccb4753ea445aa322e98d537f78f6e7f080c5e04ea3d0f7f48" }, "downloads": -1, "filename": "drf-generators-0.2.8.tar.gz", "has_sig": false, "md5_digest": "682422907913ed4fbe9e938c25d5e48e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8664, "upload_time": "2016-02-05T04:30:52", "url": "https://files.pythonhosted.org/packages/7d/3a/823474e1e2d9ac8d0c24245bc2a1b9eb4b7e44e14460998f34d1e2a45031/drf-generators-0.2.8.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "dae2b558130f70ccfc841e5679d0c57d", "sha256": "9824dcf147e18b1336ec41c0e905d45290b22862d62ee7f1b2c40c7c75435e77" }, "downloads": -1, "filename": "drf-generators-0.3.0.tar.gz", "has_sig": false, "md5_digest": "dae2b558130f70ccfc841e5679d0c57d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9437, "upload_time": "2017-03-08T04:37:23", "url": "https://files.pythonhosted.org/packages/18/8e/2895e6a2707eb41e49f1288e075e9de37732dff755af07e19071238650e5/drf-generators-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "80091ddf56338fa621b26b9d0b373454", "sha256": "7385a6b49d6eb1326cf94ced0a712cdb3f6ebe11028a354318a0f9d7db09a535" }, "downloads": -1, "filename": "drf-generators-0.4.0.tar.gz", "has_sig": false, "md5_digest": "80091ddf56338fa621b26b9d0b373454", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8727, "upload_time": "2019-03-13T19:25:17", "url": "https://files.pythonhosted.org/packages/1a/0e/4291134738d1d914aae0dc7d7b458862bbe4a2ccad2767043dbfbc97bee0/drf-generators-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "80091ddf56338fa621b26b9d0b373454", "sha256": "7385a6b49d6eb1326cf94ced0a712cdb3f6ebe11028a354318a0f9d7db09a535" }, "downloads": -1, "filename": "drf-generators-0.4.0.tar.gz", "has_sig": false, "md5_digest": "80091ddf56338fa621b26b9d0b373454", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8727, "upload_time": "2019-03-13T19:25:17", "url": "https://files.pythonhosted.org/packages/1a/0e/4291134738d1d914aae0dc7d7b458862bbe4a2ccad2767043dbfbc97bee0/drf-generators-0.4.0.tar.gz" } ] }