Created
October 10, 2017 15:22
-
-
Save DimasInchidi/68c16ddb4ab11187ff6164cd218b3fea to your computer and use it in GitHub Desktop.
example of generic view (from django.views import generic and from rest_framework import generics)
This file contains 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
##################### models.py | |
from django.db import models | |
class BlogModel(models.Model): | |
name = models.CharField(max_length=32) | |
##################### serializers.py | |
from rest_framework import serializers | |
class BlogSerializer(serializers.ModelSerializer): | |
class Meta: | |
model = BlogModel | |
fields = '__all__' | |
##################### views.py | |
from django.views import generic | |
from rest_framework import generics, permissions | |
class BlogManyObjectsAPIView(generics.ListCreateAPIView): | |
""" | |
post: Create new user Blog | |
get: Retrieve all user Blogs | |
""" | |
serializer_class = serializers.BlogSerializer | |
permission_classes = (permissions.AllowAny,) | |
queryset = BlogModel.objects.all() | |
class BlogSingleObjectAPIView(generics.RetrieveUpdateDestroyAPIView): | |
""" | |
patch: Update existing blog data by ID | |
put: Replace entirely existing blog data by ID | |
get: Retrieve user blog data by ID | |
delete: Delete blog data by ID | |
""" | |
serializer_class = serializers.BlogSerializer | |
permission_classes = (permissions.AllowAny,) | |
queryset = BlogModel.objects.all() | |
class BlogSingleObjectView(generic.DetailView): | |
model = BlogModel | |
template_name = 'blogdetail.html' | |
context_object_name = 'blog' | |
class BlogManyObjectsView(generic.ListView): | |
model = BlogModel | |
template_name = 'bloglist.html' | |
context_object_name = 'blogs' | |
##################### urls.py | |
from django.conf.urls import url | |
urlpatterns = [ | |
url(r'^api/blog/$', BlogManyObjectsAPIView.as_view(), name='api_blog_many'), | |
url(r'^api/blog/(?P<pk>[0-9]+)/$', BlogSingleObjectAPIView.as_view(), name='api_blog_single'), | |
url(r'^blog/$', BlogManyObjectsView.as_view(), name='blog_many'), | |
url(r'^blog/(?P<pk>[0-9]+)/$', BlogSingleObjectView.as_view(), name='blog_single'), | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment