1.路由
from meiduo_admin.user.user_views import UsersViewurlpatterns = [# 用户操作路由path('users/', UsersView.as_view()),
]
2. 序列化器
from rest_framework import serializersfrom meiduo_admin.models import Userclass UsersSerialize(serializers.ModelSerializer):class Meta:model = Userfields = ['id', 'username', 'mobile', 'email', 'password']# 1,给password增加额外的约束选项,不进行返回extra_kwargs = {"password": {'write_only': True}}# 1,重写create方法,密码加密def create(self, validated_data):return User.objects.create_user(**validated_data)
3. 视图
from rest_framework.generics import ListAPIView, CreateAPIViewfrom meiduo_admin import models
from meiduo_admin.user.user_serializers import UsersSerializefrom meiduo_admin.utils.myPagination import MyPageNumberPaginationclass UsersView(ListAPIView, CreateAPIView):pagination_class = MyPageNumberPaginationserializer_class = UsersSerialize# queryset = models.User.objects.filter(is_staff=False).all().order_by('-date_joined')# 1. 为了获取前端查询条件keyword重写get_queryset方法def get_queryset(self):# 2. 获取前端传入的参数keyword,名称由前端指定keyword = self.request.query_params.get('keyword')if keyword:return models.User.objects.filter(is_staff=False, username__contains=keyword).all().order_by('-date_joined')return models.User.objects.filter(is_staff=False).all().order_by('-date_joined')