[Mission 10] 다른 계정 'follow' 기능 구현
1. User app 활용
2. Follow Model 생성
class Follow(models.Model):
followuser = models.ForeignKey('User', on_delete=models.CASCADE, related_name='FollowUser')
followeduser = models.ForeignKey('User', on_delete=models.CASCADE, related_name='FollowedUser')
class Meta:
db_table = 'follows'
3. Follow View 생성
import json
from django.http import JsonResponse
from django.views import View
from users.models import User, Follow
class FollowView(View):
def post(self, request):
data = json.loads(request.body)
try:
followuser_id = data['followuser_id']
followeduser_id = data['followeduser_id']
if not User.objects.filter(id = followuser_id and followeduser_id).exists():
return JsonResponse({'message' : 'INVALID_USER'},status=401)
if Follow.objects.filter(followuser_id = followuser_id, followeduser_id = followeduser_id).exists():
return JsonResponse({'message' : 'You have already followed'},status=401)
if Follow.objects.filter(followuser_id = followeduser_id).exists():
return JsonResponse({'message' : 'It is the same user'},status=401)
Follow.objects.create(
followuser_id = followuser_id,
followeduser_id = followeduser_id
)
return JsonResponse({'message':'SUCCESS'}, status=201)
except KeyError:
return JsonResponse({'message' : 'KEY_ERROR'},status=400)
4. Urls.py 작성
from django.urls import path
from users.views import SignUpView, LoginView, FollowView
urlpatterns = [
path('/signup', SignUpView.as_view()),
path('/login', LoginView.as_view()),
path('/follow', FollowView.as_view())
]