Created
February 14, 2020 16:22
-
-
Save ntoll/31fe3e7b53372154f1457823bd0b21c6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.conf.urls import url, include | |
from django.contrib.auth.models import User | |
from rest_framework import routers, serializers, viewsets | |
from musicians.models import Musician, Album | |
from rest_framework import permissions | |
from drf_yasg.views import get_schema_view | |
from drf_yasg import openapi | |
# Serializers define the API representation. | |
class UserSerializer(serializers.HyperlinkedModelSerializer): | |
class Meta: | |
model = User | |
fields = ['url', 'username', 'email', 'is_staff'] | |
class MusicianSerializer(serializers.HyperlinkedModelSerializer): | |
class Meta: | |
model = Musician | |
fields = ["first_name", "last_name", "instrument",] | |
class AlbumSerializer(serializers.HyperlinkedModelSerializer): | |
class Meta: | |
model = Album | |
fields = ["artist", "name", "release_date", "num_stars", ] | |
# ViewSets define the view behavior. | |
class UserViewSet(viewsets.ModelViewSet): | |
queryset = User.objects.all() | |
serializer_class = UserSerializer | |
class MusicianViewSet(viewsets.ModelViewSet): | |
queryset = Musician.objects.all() | |
serializer_class = MusicianSerializer | |
class AlbumViewSet(viewsets.ModelViewSet): | |
queryset = Album.objects.all() | |
serializer_class = AlbumSerializer | |
# Routers provide an easy way of automatically determining the URL conf. | |
router = routers.DefaultRouter() | |
router.register(r'users', UserViewSet) | |
router.register(r'musicians', MusicianViewSet) | |
router.register(r'albums', AlbumViewSet) | |
schema_view = get_schema_view( | |
openapi.Info( | |
title="Snippets API", | |
default_version='v1', | |
description="Test description", | |
terms_of_service="https://www.google.com/policies/terms/", | |
contact=openapi.Contact(email="[email protected]"), | |
license=openapi.License(name="BSD License"), | |
), | |
public=True, | |
permission_classes=(permissions.AllowAny,), | |
) | |
# Wire up our API using automatic URL routing. | |
# Additionally, we include login URLs for the browsable API. | |
urlpatterns = [ | |
url(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'), | |
url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), | |
url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), | |
url(r'^', include(router.urls)), | |
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment