Skip to content

Instantly share code, notes, and snippets.

@DimasInchidi
Created October 10, 2017 15:22
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 DimasInchidi/68c16ddb4ab11187ff6164cd218b3fea to your computer and use it in GitHub Desktop.
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)
##################### 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