博文相关接口

列表页接口实现

发起GET请求,通过查询字符串http://url/posts/?page=2 查询第二页数据
实现过程
request: GET ?page=5&size=20-> 视图 get -> json 文章列表

# post/views.py
class PostView(View): # 不需要装饰器决定方法了
 def get(self, request:HttpRequest): # 获取全体文章走这里
print('get ~~~~~~~~~~~~~~~~~')
try:
posts = Post.objects.order_by('-pk')
print(posts.query)
return JsonResponse({
'posts':[
jsonify(post, allow=['id', 'title'])
for post in posts
]
})
except Exception as e:
print(e)
return HttpResponse(status=400)

进一步完整分页功能

GET /posts/?page=3&size=20 文章列表页,视图类PostView
响应
200 成功返回文章列表
class PostView(View):#不需要装饰器决定方法
    def get(self,request:HttpRequest):#获取全体文章
        try:
            page=int(request.GET.get('page',1))
            page=page if page>0 else 1
        except:
            page=1
        try:
            size=int(request.GET.get('size',20))
            size=size if size>0 and size<101 else 20
        except:
            size=20
        try:
            start=(page-1)*size
            posts=Post.objects.order_by('-pk')
            total=posts.count()

            posts=posts[start:start+size]
            return JsonResponse({
                'posts':[
                    jsonify(post,allow=['id','title'])
                    for post in posts
                ],
                'pagination':{
                    'page':page,
                    'size':size,
                    'total':total,
                    'pages':math.ceil(total/size)
                }
            })
        except Exception as e:
            return HttpResponse(status=400)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值