尝试在 Django 中实现简单的 API

Trying to Implement simple API in Django

我是 Django 的新手,正在尝试为社交媒体网站实现小型 API,我可以在其中监控 post 是否被点赞和点赞次数,然后获取 API使用 JavaScript 这样我就可以在不使用 put 方法刷新页面的情况下喜欢。问题是由于缺乏适当的知识,我在很大程度上失败了。我无法让 API 首先工作。

models.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
    }

views.py片段

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"),
]

当我尝试访问 Post url 时,我希望 json 响应显示在大部分空白页面上。应该是这样吗?我怎样才能让我的 API 正常工作?

serialize 方法处理一个 Like 对象,而 like 是一个 likes 列表,没有这样的功能

一种技巧是在里面的objs上循环

def likes(request):
    likes = [l.serialize() for l in Likes.objects.all()]
    return JsonResponse(likes,safe=False)

safe 为 False,因为 JSONResponse 默认需要一个对象。