Skip to content

Instantly share code, notes, and snippets.

@ntoll
Created February 14, 2020 16:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ntoll/89463ac423d37cc6ada804f1cd64856e to your computer and use it in GitHub Desktop.
Save ntoll/89463ac423d37cc6ada804f1cd64856e to your computer and use it in GitHub Desktop.
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="contact@snippets.local"),
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_time
out=0), name='schema-json'),
url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='sch
ema-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