Python
1.4创建user/serializers.py写序列化器
from rest_ framework import serializers
from user 。models import User
def address_ validate( data):
#独立校验器
# raise serializers . ValidationError('请填写实际地址') #有错就抛出异常
#没错就返回数据
return data
#没错就返回数据
return data
class UserSerializer(serializers . ModelSerializer):
# 1.独立校验器: 重新设定字段,替换掉模型中的设定,重新设定地址的长度为5
address = serializers CharF ield(max_ 1ength=255,min_ 1ength=5, val idators= [address_ validate])
# 2.单一字段验证,验证地址
def validate_ address(self, data):
if data =='测试':
raise serializers . ValidationError( '请填写实际地址") # 有错就抛出异常
return data # 没错就返回结果
def validate. _phone(self, data):
#不符合手机号格式
# raise serializers . ValidationError('手机号格式不正确')
model = self . root. Meta . model
num = model . objects . filter( phone=data) . count( )    """
from django.http import HttpResponse # http响应
from django_filters.rest_framework import DjangoFilterBackend # Django过滤器后端
from rest_framework import viewsets # 视图集
from rest_framework . authentication import BasicAuthentication,SessionAuthentication # 基本身份验证, 会话身份验证
from rest_framework.decorators import action
from rest_framework.filters import OrderingFilter # 排序过滤器
from rest_framework. permissions import AllowAny,IsAdminUser,IsAuthenticated,IsAuthenticatedOrReadOnly #从权限导入允许所有、Admin用户、经过身份验证、经过身份验证或只读
from rest_framework.response import Response
from rest_framework.throttling import UserRateThrottle # 用户速率节流
from rest_framework.pagination import PageNumberPagination # 页码分页
from rest_framework .views import APIView
from rest_framework .permissions import BasePermission,SAFE_METHODS # 基础权限、SAFE_METHODS
from user .models import UserModel
from user.serializers import UserSerializer
""" def index(request):
# 需要认证才能访问的视图
return HttpResponse('hello') """分页布局:自定义分页器 布局""" class PageNum(PageNumberPagination):
"""查询字符串中代表每页返回数据数量的参数名,默认值: None"""
page_size_query_param = 'page_size'
# 查询字符串中代表页码的参数名,有默认值: page
page_query_param = 'page'
# 一页中最多的结果条数
max_page_size = 2 """自定义权限(局部)""" class MyPermission(BasePermission):
def has_permission(self, request, view):
print(view.kwargs.get("pk"), request.user.id)
"""判断用户对模型有没有访问权
任何用户对使用此权限类的视图都有访问权限"""
print(request)
if request.user.is_superuser:
"""管理员对用户模型有访问权"""
return True
elif view.kwargs.get('pk') == str(request.user.id):
"""携带的id和用户的id相同时有访问权"""
return True
return False def has_object_permission(self, request, view, obj):
# 获取单个数据时,判断用户对某个数据对象是否有访问权限
if request.user.id == obj.id:
return True
return False class UserViewSet(viewsets.ModelViewSet):
"""完成产品的增删改查"""
queryset = User.objects.all()
serializer_class = UserSerializer # 优先使用get_serializer_class返回的序列化器?
# #1.认证:自定义认证类,自定义会覆盖全局配置
# authentication_classes = (BasicAuthentication,SessionAuthentication)
# #2.权限:自定义权限类
# permission_classes = (MyPermission,) # 3.分页:自定义分页器覆盖全局配置
pagination_class = PageNum
# 4.限流:自定义限流类
throttle_classes = [UserRateThrottle]
# 5.过滤:指定过滤方法类,排序方法类,一个或多个
filter_backends = (DjangoFilterBackend, OrderingFilter)
# 5.1指定排序字段,不设置,排序功能不超效
ordering_fields = ('date_joined', 'id')
# 5.2指定过滤字段,不设置,过滤功能不起效
filter_fields = ('username', 'phone', 'is_active') def get_serializer_class(self):
if self.action == 'unactived':
return UserUnActiveSerializer
else:
return UserSerializer @action(methods=['get'], detail=False)
def unactived(self, request, *args, **kwargs):
# 获取查询集,过滤出未激活的用户
qs = self.queryset.filter(is_active=False)
# 使用序列化器,序列化查询集,并且序列化多条
ser = self.get_serializer(qs, many=True)
return Response(ser.data)
  

modelviewset views的更多相关文章

  1. Django - rest - framework - 下

    一.视图三部曲 https://www.cnblogs.com/wupeiqi/articles/7805382.html 使用混合(mixins) 之前得视图部分 # urls.py from dj ...

  2. Django中views笔记

    reverse反解析 #路由中定义namespace.name,reverse可将其转换为url url = reverse('namespace:name') return redirect(url ...

  3. ModelViewSet 路由 / django logging配置 / django-debug-toolbar使用

    一.ModelViewSet 路由 因为我们正在使用ViewSet代替View,实际上已经不再需要自己来设计URL的配置了.将资源和视图.URL绑定到一起是一个可以自动完成的过程,只需要使用Route ...

  4. Django的rest_framework的视图之基于ModelViewSet视图源码解析

    前言 今天一直在整理Django的rest_framework的序列化组件,前面一共写了2篇博客,前面的博客给的方案都是一个中间的状态的博客,其中有很多的冗余的代码,如果有朋友不清楚,可以先看下我前面 ...

  5. ModelViewSet 视图集 实现接口

    一.创建项目 1.创建 项目 : django-admin startprojet drf 2. 创建 两个app   ------ app1 ,book python manage.py start ...

  6. Django Rest Framework----ModelViewSet视图 ModelViewSet源码分析

    一.视图类 #bookview是一个视图类,继承自ModelViewSet class BookView(ModelViewSet): throttle_classes = [VisitThrottl ...

  7. DRF--重写views

    前戏 在前面几篇文章里,我们写了get请求,post请求,put请求,在来写个delete请求,大概如下. class BookView(APIView): # 查询所有的数据和post方法 def ...

  8. Django源码分析rest_framework 关于re_path('^publish/', views.PublishView.as_view()总结

    1. ApiView 定义一个cbc视图 class BookView (APIView):pass re_path(r"books/$", views.BookView.as_v ...

  9. rest_framework之ModelViewSet、路由控制、序列化组件快速搭建项目雏形

    以UserInfo表登陆接口为例 ModelViewSet的用法十分简单,定义一个视图类,指定一个模型表,指定一个序列化类即可帮我们完成增删改查等功能 示例: # 视图层 from app01.MyS ...

随机推荐

  1. 把Autofac玩的和javaSpring一样6

    大家好,今天来介绍我开源的一个autofac.Annotation项目 源码:https://github.com/yuzd/Autofac.Annotation 本项目是autofa的一个扩展组件, ...

  2. go语言基础实例

    一:变量 1)变量声明 func main() { var v1 int var v2 int //一次声明多个变量 var ( v3 int v4 int ) //变量最开始会有一个零值 fmt.P ...

  3. RabbitMQ入门指南

    消息队列(Message Queue,以下简称MQ)常用于异步系统的数据传递.若不用MQ,我们只能[在应用层]使用轮询或接口回调等方式处理,这在效率或耦合度上是难以让人满意的.当然我们也可以在系统间保 ...

  4. Istio安全-授权(实操三)

    Istio安全-授权 目录 Istio安全-授权 授权HTTP流量 为使用HTTP流量的负载配置访问控制 卸载 授权TCP流量 部署 配置TCP负载的访问控制 卸载 使用JWT进行授权 部署 使用有效 ...

  5. python给excel文件加密码,并重新生成文件

    需安装pywin32 pip install pywin32 直接上源码.简单几行就搞定 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. ...

  6. HTTPS的简介

    一.什么是HTTPS HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版.现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面. HTTPS主要作用是: (1) ...

  7. 尝试MatCap类型shader

    听说MatCap能在低端机上做出很漂亮的pbr效果,就尝试了一下. MatCap全称MaterailCapture,里面存的是光照信息,通过法线的xy分量去采样matcap,得到在该方向法线的光照信息 ...

  8. 分布式ID生成方案汇总

    1.目标 1.1.全局唯一 不能出现重复的ID,全局唯一是最基本的要求. 1.2.趋势有序 业务上分页查询需求,排序需求,如果ID直接有序,则不必建立更多的索引,增加查询条件. 而且Mysql Inn ...

  9. Oracle12C配置对外访问

    Oracle12C配置对外访问 第一步: 开放端口或者关闭防火墙 第二步: 配置Oracle net manager打开Net manager 修改为共享服务器 第三步: 配置连接数打开Databas ...

  10. 详解JVM中的内存模型是什么?

    强烈推荐 不管是找工作还是提升水平,都建议读一下<深入理解Java虚拟机>这本书,详细讲解了JVM中的内存管理.类加载过程.垃圾回收以及最重要的性能调优实战. 本博客也是参考了这本书,有不 ...