用户管理之用户的查询获取
  TEZNKK3IfmPf 2023年11月13日 31 0

用户管理

用户管理之用户的查询获取

在用户页面我们需要完成两个功能:

1、用户信息的查询获取

2、增加用户

用户的查询获取

用户管理之用户的查询获取

 【获取单一数据和多个数据可以通过判断合并到一块写代码】

接口分析

请求方式:GET /meiduo_admin/users/?keyword=<搜索内容>&page=<页码>&pagesize=<页容量>

from .views import statistical, users
   
 #-------用户管理---------
    url(r'^users/$',users.UserView.as_view()),

请求参数: 通过请求头传递jwt token数据。

参数 类型 是否必须 说明
keyword str 搜索用户名
page int 页码
pagesize int 页容量

返回数据: JSON

 {
        "counts": "用户总量",
        "lists": [
            {
                "id": "用户id",
                "username": "用户名",
                "mobile": "手机号",
                "email": "邮箱"
            },
            ...
        ],
        "page": "页码",
        "pages": "总页数",
        "pagesize": "页容量"
      }
返回值 类型 是否必须 说明
count int 用户总量
Lists 数组 用户信息
page int 页码
pages int 总页数
pagesize int 页容量

后端实现

用户管理之用户的查询获取

from rest_framework.generics import ListAPIView
from meiduo_admin.serializers.user import UserSerializer
from meiduo_admin.utils import UserPageNum
from users.models import User


class UserView(ListAPIView):
    # 指定使用的序列化器
    serializer_class = UserSerializer
    # 指定分页器
    pagination_class = UserPageNum

    # 重写get_queryset方法,根据前端是否传递keyword值返回不同查询结果
    def get_queryset(self):
        # 获取前端传递的keyword值
        keyword = self.request.query_params.get('keyword')
        # 如果keyword是空字符,则说明要获取所有用户数据
        if keyword is '' or keyword is None:
            return User.objects.all()
        else:
            return User.objects.filter(username=keyword)  # 获取单一用户数据,这儿也可以使用模糊查询:username__contains=keyword

指定序列化器:

用户管理之用户的查询获取

from rest_framework import serializers
from users.models import User


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'mobile', 'email')

指定分页器:【meiduo_admin.utils.pagenum】

from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response


class UserPageNum(PageNumberPagination):
    page_size = 5  # 后端指定每页显示数量
    page_size_query_param = 'pagesize'
    max_page_size = 10

    # 重写分页返回方法,按照指定的字段进行分页数据返回
    def get_paginated_response(self, data):
        return Response({
            'count': self.page.paginator.count,  # 总数量
            'lists': data,  # 用户数据
            'page': self.page.number,  # 当前页数
            'pages': self.page.paginator.num_pages,  # 总页数
            'pagesize': self.page_size  # 后端指定的页容量

        })

postman测试:

用户管理之用户的查询获取

 用户管理之用户的查询获取

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   39   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   28   0   0 python
  TEZNKK3IfmPf   2024年05月31日   31   0   0 python
TEZNKK3IfmPf