Skip to content

Commit 42609a5

Browse files
committedMar 9, 2021
added user serializer, view for that, added views for comment and like srializer.
1 parent 2ef5aaa commit 42609a5

File tree

3 files changed

+158
-3
lines changed

3 files changed

+158
-3
lines changed
 

‎api/urls.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@
99
path('category/', views.category_list, name="category_list"),
1010
path('category/<int:pk>/', views.category_detail, name="category_detail"),
1111
path('posts/', views.post_list, name='post_list'),
12-
path('posts/<int:pk>', views.post_detail, name='post_detail'),
12+
path('posts/<int:pk>/', views.post_detail, name='post_detail'),
13+
path('comments/', views.comment_list, name='comment_list'),
14+
path('comments/<int:pk>/', views.comment_detail, name='comment_detail'),
15+
path('likes/', views.like_list, name='like_list'),
16+
path('likes/<int:pk>/', views.like_detail, name='like_detail'),
17+
path('users/', views.custom_user_list, name='user_list'),
1318
]
1419

1520
urlpatterns = format_suffix_patterns(urlpatterns)

‎api/views.py

+132-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,50 @@
77
from blog.serializers import *
88
# Create your views here.
99

10+
11+
@api_view(['GET', 'POST'])
12+
def custom_user_list(request, format=None):
13+
"""
14+
list all users or create one.
15+
"""
16+
if request.method == 'GET':
17+
users = CustomUser.objects.all()
18+
serializer = CustomUserSerializer(users, many=True)
19+
return Response(serializer.data)
20+
21+
elif request.method == 'POST':
22+
serializer = CustomUserSerializer(data=request.data)
23+
if serializer.is_valid():
24+
serializer.save()
25+
return Response(serializer.data, status=status.HTTP_201_CREATED)
26+
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
27+
28+
29+
@api_view(['GET', 'PUT', 'DELETE'])
30+
def custom_user_detail(request, pk, format=None):
31+
'''
32+
Retrieve or update or delete a user.
33+
'''
34+
try:
35+
user = CustomUser.objects.get(pk=pk)
36+
except CustomUser.DoesNotExist:
37+
return Response(status=status.HTTP_404_NOT_FOUND)
38+
39+
if request.method == 'GET':
40+
serializer = CustomUserSerializer(user)
41+
return Response(serializer.data)
42+
43+
elif request.method == 'PUT':
44+
serializer = CustomUserSerializer(user, data=request.data)
45+
if serializer.is_valid():
46+
serializer.save()
47+
return Response(serializer.data)
48+
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
49+
50+
elif request.method == 'DELETE':
51+
user.delete()
52+
return Response(status=status.HTTP_204_NO_CONTENT)
53+
1054
@api_view(['GET', 'POST'])
1155
def tag_list(request, format=None):
1256
"""
@@ -118,7 +162,7 @@ def post_list(request, format=None):
118162
@api_view(['GET', 'PUT', 'DELETE'])
119163
def post_detail(request, pk, format=None):
120164
"""
121-
Retrieve, update of delete a post.
165+
Retrieve, update or delete a post.
122166
"""
123167
try:
124168
post = Post.objects.get(pk=pk)
@@ -140,3 +184,90 @@ def post_detail(request, pk, format=None):
140184
post.delete()
141185
return Response(status=status.HTTP_204_NO_CONTENT)
142186

187+
188+
@api_view(['GET', 'POST'])
189+
def comment_list(request, format=None):
190+
"""
191+
list all comments or create one.
192+
"""
193+
if request.method == 'GET':
194+
comments = Comment.objects.all()
195+
serializer = CommentSerializerList(comments, many=True)
196+
return Response(serializer.data)
197+
198+
elif request.method == 'POST':
199+
serializer = CommentSerializerList(data=request.data)
200+
if serializer.is_valid():
201+
serializer.save()
202+
return Response(serializer.data, status=status.HTTP_201_CREATED)
203+
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
204+
205+
@api_view(['GET', 'PUT', 'DELETE'])
206+
def comment_detail(request, pk, format=None):
207+
"""
208+
Retrieve, update or delete a comment.
209+
"""
210+
try:
211+
comment = Comment.objects.get(pk=pk)
212+
except Comment.DoesNotExist:
213+
return Response(status=status.HTTP_404_NOT_FOUND)
214+
215+
if request.method == "GET":
216+
serializer = CommentSerializerDetail(comment)
217+
return Response(serializer.data)
218+
219+
elif request.method == "PUT":
220+
serializer = CommentSerializerDetail(comment, data=request.data)
221+
if serializer.is_valid():
222+
serializer.save()
223+
return Response(serializer.data)
224+
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
225+
226+
elif request.method == "DELETE":
227+
comment.delete()
228+
return Response(status=status.HTTP_404_NOT_FOUND)
229+
230+
231+
@api_view(['GET', 'POST'])
232+
def like_list(request, format=None):
233+
"""
234+
list all likes or create one.
235+
"""
236+
237+
if request.method == "GET":
238+
likes = Like.objects.all()
239+
serializer = LikeSerializer(likes, many=True)
240+
return Response(serializer.data)
241+
242+
elif request.method == 'POST':
243+
serializer = LikeSerializer(data=request.data)
244+
if serializer.is_valid():
245+
serializer.save()
246+
return Response(serializer.data, status=status.HTTP_201_CREATED)
247+
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
248+
249+
250+
@api_view(['GET', "PUT", 'DELETE'])
251+
def like_detail(request, pk, format=None):
252+
"""
253+
Retrieve, update or delete a like.
254+
"""
255+
try:
256+
like = Like.objects.get(pk=pk)
257+
except Like.DoesNotExist:
258+
return Response(status=status.HTTP_404_NOT_FOUND)
259+
260+
if request.method == 'GET':
261+
serializer = LikeSerializer(like)
262+
return Response(serializer.data)
263+
264+
elif request.method == 'PUT':
265+
serializer = LikeSerializer(like, data=request.data)
266+
if serializer.is_valid():
267+
serializer.save()
268+
return Response(serializer.data)
269+
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
270+
271+
elif request.method == 'DELETE':
272+
like.delete()
273+
return Response(status=status.HTTP_404_NOT_FOUND)

‎blog/serializers.py

+20-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22
from blog.models import *
33

44

5+
class CustomUserSerializer(serializers.ModelSerializer):
6+
post_set = serializers.StringRelatedField(many=True)
7+
comment_set = serializers.StringRelatedField(many=True)
8+
like_set = serializers.StringRelatedField(many=True)
9+
10+
class Meta:
11+
model = CustomUser
12+
fields = ['username', 'first_name', 'last_name',
13+
'email', 'image', 'phone', 'datetime',
14+
'post_set', 'comment_set', 'like_set']
15+
16+
517
class TagSerializer(serializers.ModelSerializer):
618
class Meta:
719
model = Tag
@@ -28,7 +40,14 @@ class Meta:
2840
'active', 'get_count_likes', 'get_count_dislikes']
2941

3042

31-
class CommentSerializer(serializers.ModelSerializer):
43+
class CommentSerializerList(serializers.ModelSerializer):
44+
class Meta:
45+
model = Comment
46+
fields = ['id', 'datetime', 'show',
47+
'get_count_likes', 'get_count_dislikes']
48+
49+
50+
class CommentSerializerDetail(serializers.ModelSerializer):
3251
class Meta:
3352
model = Comment
3453
fields = ['id', 'text', 'datetime', 'show',

0 commit comments

Comments
 (0)
Please sign in to comment.