Django基础教程(126)Django关系和超链接API之添加分页功能:Django API分页:告别“瀑布流”式灾难,让你的接口优雅如丝!

嘿,伙计们!今天咱们来聊一个能让你Django API性能和人品都瞬间飙升的话题——分页

想象一下这个场景:你心血来潮,用Django REST Framework (后面咱就亲切地叫它DRF) 撸了一个博客文章的API。一开始只有十来篇文章,前端小哥调用得美滋滋。但随着你的勤奋耕耘,文章数量突破了1000篇大关…… 这时,前端小哥的脸绿了,浏览器卡死了,用户跑光了。

为什么?因为你一次性把1000篇文章,连带它们的评论、作者信息,像倒垃圾一样“哗啦”全扔给了前端。这哪是API啊,这简直是数据界的“瀑布流”灾难现场!

所以,分页,它不是一种选择,而是一种美德。就像你去自助餐,肯定不会把整个餐台搬回座位,而是一盘一盘地取用。分页,就是让你的API学会“吃自助餐”的优雅礼仪。

一、温故知新:关系和超链接API是啥?

在给我们的API“增肌”(加分页)之前,得先确保它的“骨架”(基础结构)是好的。我们之前学过,DRF有两种让API关系更清晰的方式:

  1. 关系(Relations): 比如用PrimaryKeyRelatedFieldStringRelatedField,或者我们今天的主角——HyperlinkedRelatedField。它主要用于反向关系,比如通过一个作者,找到他写的所有文章。
  2. 超链接API(Hyperlinked APIs): 这是更RESTful的做法。它不在响应体里直接嵌入关联对象的数据或ID,而是给你一个URL链接。就像给你一个地图坐标,而不是把整个房子背在身上。这让API更加自描述,客户端只需要跟着链接走就行了。

我们来快速搭建一个今天要用的示例模型:

# models.py
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    bio = models.TextField()

    def __str__(self):
        return self.name

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='articles')

    def __str__(self):
        return self.title

然后,是我们的关系和超链接API的序列化器与视图:

# serializers.py
from rest_framework import serializers
from .models import Article, Author

class AuthorSerializer(serializers.HyperlinkedModelSerializer):
    # 看这里!这是“关系”的体现。它链接到
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值