You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

28 lines
968 B

from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response
from rest_framework.views import APIView
from library.models import Article
from library.serializers import ArticleSerializer, ArticleDetailSerializer
class LibraryListView(APIView):
renderer_classes = (JSONRenderer,)
status_code = 200
def get(self, request):
return Response([ArticleSerializer(i).data for i in Article.objects.filter(public=True)], self.status_code)
class LibraryDetailView(APIView):
renderer_classes = (JSONRenderer,)
status_code = 200
def get(self, request, slug):
try:
article = Article.objects.get(slug=slug)
if not article.public:
return Response('Article not published', 403)
return Response(ArticleDetailSerializer(article).data, self.status_code)
except Article.DoesNotExist:
return Response("Article doesn't exist", status=404)