Soy muy nuevo en Django y estoy tratando de implementar una pequeña API para el sitio web de redes sociales donde puedo monitorear si la publicación ha gustado y la cantidad de Me gusta y luego obtener la API usando JavaScript para que me guste sin actualizar la página usando el método put. El problema es que fracasé en gran medida debido a la falta de conocimiento adecuado. En primer lugar, no pude hacer que la API funcionara.
modelos.py
from django.contrib.auth.models import AbstractUser from django.db import models class User(AbstractUser): pass class New_Post(models.Model): user = models.ForeignKey(User, null=True, on_delete=models.CASCADE) New_Post = models.CharField(null=True, max_length=300) def __str__(self): return f"{self.New_Post}" class Likes(models.Model): user = models.ForeignKey(User, null=True, on_delete=models.CASCADE) like = models.BooleanField(default=False) New_Post = models.ForeignKey(New_Post, null=True, on_delete=models.CASCADE) def serialize(self): return { "id": self.id, "post": self.New_Post, "user": self.user, "like": self.like }vistas.py fragmento
def likes(request): like = Likes.objects.all() return JsonResponse(like.serialize())urls.py
urlpatterns = [ path("", views.index, name="index"), path("login", views.login_view, name="login"), path("logout", views.logout_view, name="logout"), path("register", views.register, name="register"), path("Post", views.likes, name="likes"), ]Cuando intento acceder a la URL de la publicación, espero que la respuesta json se muestre en una página mayormente en blanco. ¿Debería ser así? ¿Cómo puedo hacer que mi API funcione?
El método de serialización maneja un objeto Me gusta, mientras que Me gusta es una lista de Me gusta, que no tiene esa función.
Una técnica es hacer un bucle en los objs dentro
def likes(request): likes = [l.serialize() for l in Likes.objects.all()] return JsonResponse(likes,safe=False)safe es False ya que JSONResponse quiere un objeto por defecto.