DRF学习第三课

Restful接口标准:

1,请求方式:获取 GET,保存 POST,更新 PUT,删除 DELETE

2,请求路径:1,资源的名词复数作为路径  2,单一资源操作如:books/1/

3,请求参数:1,根据模型确定传递的字段-保存或更新--JSON  2,过滤信息--查询字符串形式传递

4,返回结果:1,错误 {error:错误信息} 2,正确  根据请求方式返回不同的结果

 

序列化器的知识点:

read_only=True  只参与序列化返回,不参与发序列化的验证和保存

write_only=True 只参与反序列化,不参与序列化返回

validated_data 获取验证后的字段数据

#单一字段验证
def validate_title(self,value):
    if value=="python':
        raise serializers.ValidationError("书名不能是python")
    return value
#多个字段验证
def validate(self,attrs):
    if attrs['read'] > attrs['comment']:
        raise serializers.ValidationError('阅读量不能评论量')
    return attrs
#可关联英雄的数据ID,也就是反向查询
    heroinfo_set=serializers.PrimaryKeyRelatedField(read_only=True,many=True)
  #返回英雄模型的str方法值
    heroinfo_set=serializers.StringRelatedField(read_only=True,many=True)
  #嵌套序列化器,对应的序列化器一定要在前面,否则会报错
    heroinfo_set=HeroInfoSerialzier(many=True)

===========

自定义路由方法(自动生成):

必须配合modelviewset使用,DefaultRouter是对根目录有展示内容首页匹配,是继承SimpleRouter

from rest_framework.routers import SimpleRouter,DefaultRouter
urlpatterns=[]
router=SimpleRouter()
router.register('books',BookView,base_name='books')
print(router.urls)
urlpatterns+=router.urls

action装饰器的使用

#detail的True则继承正则规则,如False则不继承正则规则,一般此装饰器配合自动生成路由
@action(methods='get',detail=True)
def lastdata(self,request,pk):
    pass

 

posted @ 2023-05-28 14:01  super_ip  阅读(12)  评论(0编辑  收藏  举报