Как сделать Rest API представления и URL конечной точки из следующего кода Django Modol
Это мой веб-код Django для функциональности запроса друга. Мы переходим к созданию RestAPI тех же функций в DjangoREST Framework. Запутался, как сделать сериализацию, урлы и API Views в DjangoREST API. Пожалуйста, помогите.
Code
from django.db import models
from userAuth.models import UserAuth
class FriendList(models.Model):
user = models.OneToOneField(UserAuth,
on_delete=models.CASCADE, related_name="user")
friends = models.ManyToManyField(UserAuth, blank=True, related_name="friends")
def add_friend(self, account):
"""
Add a new friend.
"""
if not account in self.friends.all():
self.friends.add(account)
self.save()
def remove_friend(self, account):
"""
Remove a friend.
"""
if account in self.friends.all():
self.friends.remove(account)
def unfriend(self, removee):
"""
Initiate the action of unfriending someone.
"""
remover_friends_list = self # person terminating the friendship
# Remove friend from remover friend list
remover_friends_list.remove_friend(removee)
# Remove friend from removee friend list
friends_list = FriendList.objects.get(user=removee)
friends_list.remove_friend(remover_friends_list.user)
def is_mutual_friend(self, friend):
"""
Is this a friend?
"""
if friend in self.friends.all():
return True
return False
class FriendRequest(models.Model):
"""
A friend request consists of two main parts:
1. SENDER
- Person sending/initiating the friend request
2. RECEIVER
- Person receiving the friend request
"""
sender = models.ForeignKey(UserAuth, on_delete=models.CASCADE, related_name="sender")
receiver = models.ForeignKey(UserAuth, on_delete=models.CASCADE, related_name="receiver")
is_active = models.BooleanField(blank=False, null=False, default=True)
timestamp = models.DateTimeField(auto_now_add=True)
def accept(self):
"""
Accept a friend request.
Update both SENDER and RECEIVER friend lists.
"""
receiver_friend_list = FriendList.objects.get(user=self.receiver)
if receiver_friend_list:
receiver_friend_list.add_friend(self.sender)
sender_friend_list = FriendList.objects.get(user=self.sender)
if sender_friend_list:
sender_friend_list.add_friend(self.receiver)
self.is_active = False
self.save()
def decline(self):
"""
Decline a friend request.
Is it "declined" by setting the `is_active` field to False
"""
self.is_active = False
self.save()
В приведенном выше коде UserAuth - это не что иное, как ссылка на пользовательскую таблицу User, определенную в другом классе. Это прекрасно работает в Django Web, но теперь нам нужно сделать api для вышеуказанной функциональности.