首页 > 其他分享 >Drf-APIView

Drf-APIView

时间:2022-08-28 17:11:52浏览次数:49  
标签:ser models APIView request kwargs Drf data view

1、背景:

      继承于django原生的view,在实现的as_view方法中对原生的view做了加强,另外APIView的  request 是基于django的 Request做了加强,不在是原生的request,这一步解析是在drf.APIVIew 的 dispatch方法中完成的,主要是增加了认证以及限流等实现类

 

 

2、使用:

     view

    

class BookApiView(APIView):
def get(self,request,*args,**kwargs):
# 此时 request已经不是django原生的,是drf自己定义的,drf除了重写了额as_view 还重写了dispatch 方法 ,在dispatch中对request方法又重写了]
parmers = request.query_params()
books = Book.objects.all()
book_ser = BookModelSerializer(books,many=True)
return Response({"code":500,"data":book_ser.data})

def post(self,request,*args,**kwargs):
ser = BookModelSerializer(data = request.data)
if ser.is_valid():
ser.save()
return Response({"code":1000,"data":ser.data})

  

    model

class Book(models.Model):
    nid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=256)
    # max_digits 总共5位 小数点后2位
    price = models.DecimalField(max_digits=5, decimal_places=2)
    author = models.CharField(max_length=256)

    def __str__(self):
        return self.name

  ser

class BookModelSerializer(ModelSerializer):
    class Meta:
        # 序列化那个表
        model = Book
        # 所有字段全部序列化
        fields = "__all__"
        # 渲染制定字段
        #fields = ('name','price')
        # 排除字段 fields 互斥
        #exclude = ("nid",)
        # 3.2 版本在之后 已经启用extra_kwargs
        # read_only_fields = ('price')
        # write_only_fileds = ('name')

        #后续需要搭配 extra_kwargs 参数指定 不能对id 主建做限制
        extra_kwargs = {
            "price":{
                "min_value":0,"required":True,"write_only":True
            }
        }

   url

urlpatterns = [
     path('admin/', admin.site.urls),
     path('book2/',ap01view.BookApiView.as_view())
]

  

标签:ser,models,APIView,request,kwargs,Drf,data,view
From: https://www.cnblogs.com/yuan-x/p/16633110.html

相关文章

  • Drf视图集合
    1.背景:    技术储备,drf适合前后端分离项目,比较适合单表操作的业务,另外丰富的视图集合配合路由自动生成,开发速度能得到极大的提升。 2、视图分类:   ......
  • DRF当中序列化器中通过重写create()来实现保护登录保护
    在DRF原来源码框架中,我们知道保存的用户信息时,用户的密码是被明文保存到数据库中。代码实classUserRegisterModelSerializer(serializers.ModelSerializer)   """......
  • 七,DRF 过滤-排序-分页-异常处理
    一过滤Filtering对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。pipinstalldjango-filter在配置文件中增加过滤后端的设置:#......
  • 九,DRF JWT-RBAC
    一JWT认证在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证。我们不再使用Session认证机制,而使用JsonWebToken(本质就是token)认证机制。Json......
  • drf-jwt
    jwt这里主要分享的是drf的jwt。原因如下:Jsonwebtoken,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC7519).该token被设计为紧凑且安全的,特别适用......