brobin / drf-generators Goto Github PK
View Code? Open in Web Editor NEW:triangular_ruler: Generate Views, Serializers, and Urls for your Django Rest Framework application
License: MIT License
:triangular_ruler: Generate Views, Serializers, and Urls for your Django Rest Framework application
License: MIT License
It'd be handy to be able to specify custom templates on a per project basis without forking the entirety of drf-generators
. Basically, I'm thinking a command line option on the management command for a base package name.
Easiest way to do this is probably to inject global names into the generators
module for the imports here: https://github.com/Brobin/drf-generators/blob/master/drf_generators/generators.py#L5
I am using this python manage.py generate api --format modelviewset
but it says manage.py: error: no such option: --format
when I run this command this gives error.
AttributeError: type object 'AppCommand' has no attribute 'option_list'
:(
that's why http://127.0.0.1:8000/ gives me page not found
Hi there.
The file <path-to-python-site-packages>/drf_generators/management/__init__.py
is missing when installing drf-generators from pip, as described at http://brobin.me/blog/2015/4/13/how-to-quickly-write-an-api-in-django
This produces the following error:
$ python manage.py generate api --format modelviewset
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/user/django-app/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/home/user/django-app/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/user/django-app/lib/python2.7/site-packages/django/core/management/__init__.py", line 190, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/user/django-app/lib/python2.7/site-packages/django/core/management/__init__.py", line 40, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named management.commands.generate
It appears easily fixed by:
touch <path-to-python-site-packages>/drf_generators/management/__init__.py
After this, running python manage.py generate api --format modelviewset
seems to run without any problems.
Currently monkey patching the generator
enables support for Django2.0.
Hello there - I just found this AMAZING repo and it works wonders of initializing a pretty comprehensive start for a fully covering api!
I have quite a few models that are read-only, and I was wondering if it is possible to define this somewhere, such the irrelevant properties in views and serializers are not set?
I'm attempting to run the generator for app named "manager"
python manage.py generate manager --format modelviewset
I'm getting the following error
File "/python/api/lib/python3.5/site-packages/drf_generators/management/commands/generate.py", line 8, in <module>
class Command(AppCommand):
File "python/api/lib/python3.5/site-packages/drf_generators/management/commands/generate.py", line 33, in Command
option_list = AppCommand.option_list + base_options
AttributeError: type object 'AppCommand' has no attribute 'option_list'
Add default authentication to views.
Example for viewset, modelviewset, apiview
from rest_framework import authentication, permissions
class SomeViewSet(SomeViewType):
authentication_classes = (authentication.TokenAuthentication,)
Example for function based
@authentication_classes(...)
def some_veiw():
...
Please make available for Django 4. (Latest Versions)
Hello, Pls have a look at the Turkle project at hltcoe/turkle#32. We're trying to add an api to it, but concerned that the generators will blow away existing files or otherwise radically change the underlying code design. Your input would be very much appreciated. Thanks in advance.
Having just --apiview
is kinda bad, especially when I add new subclasses of BaseGenerator to support function based views, etc.
Perhaps have a --format
option that is required. i.e.
python manage.py generate --format apiview app
python manage.py generate --format viewset app
python manage.py generate --format function app
that appeared after all what i have done
Using the URLconf defined in example_api.urls, Django tried these URL patterns, in this order:
^admin/
^api/
The empty path didn't match any of these
Add default authentication to views.
Example for viewset, modelviewset, apiview
from rest_framework import permissions
class SomeViewSet(SomeViewType):
permission_classes = (permissions.SomePermission,)
Example for function based
@permission_classes(permissions.SomePermission,)
def some_veiw():
...
This may be just an edge case for myself, but I have added django-simple-history to my project to track changes made to instances of my models, and use that in the admin. I want to exclude the history field from each model, and when I ran the generate management command, the generator created serializer and modelviewset classes from the relationship for historical records, along with corresponding URLs. Now I know I can delete these and clean it up on my own, but could there be an option to define an excluded model from generation? Thank you
Is drf-generators supports Django 2.0 ? There no any information in README regarding Django version support.
The Post
and Category
models in the test api are related, but we never test the relations in the api. Test with different depths and compare outputs.
Make sure any new features in DRF 3.2 are considered
Suport function based views as described in the drf documentation.
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from snippets.models import Snippet
from snippets.serializers import SnippetSerializer
@api_view(['GET', 'POST'])
def snippet_list(request):
"""
List all snippets, or create a new snippet.
"""
if request.method == 'GET':
snippets = Snippet.objects.all()
serializer = SnippetSerializer(snippets, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = SnippetSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET', 'PUT', 'DELETE'])
def snippet_detail(request, pk):
"""
Retrieve, update or delete a snippet instance.
"""
try:
snippet = Snippet.objects.get(pk=pk)
except Snippet.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
serializer = SnippetSerializer(snippet)
return Response(serializer.data)
elif request.method == 'PUT':
serializer = SnippetSerializer(snippet, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'DELETE':
snippet.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
Perhaps a good feature would be to include generation of test data. Nobody likes creating test data and there are good libraries out there for it.
django-faker does this but it appears that it is no longer maintained and has no support for Python 3. Can be implemented using the faker library.
Example command: python manage.py fake api 15
, would add 15 of each object in the api
app.
Hi
I'm just start project and use django 1.9(b1). May be it's better to use
elif django.VERSION[1] >= 8:
instead of
elif django.VERSION[1] == 8:
?
Or something like that...
Using Django 2.2.2 and Python 3.7.3 the generator command will only create APIView views.py regardless of the command given. I tested this with an existing, a brand new, and another developer's venv, to the same result.
It does write a new file, but only APIView.
Instead of writing / overwriting a file, I would like an option to print to stdout.
It would let the user decide to pipe the output to another file, or copy just parts of the output, without worrying about overwriting existing files.
I have a well-established Django app with its models.py
and other bits in an app called schema
. I started developing an API in a different app called api
but didn't get far. Then I discovered this amazing project! Is there a way to make it write out the generated API files in a different app from the source app? Thanks
Many people use ViewSet instead of APIView. Add a command argument for the type of views to generate.
Hi, I am trying to generate views with viewset
format but it always generates apiview
format.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.