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
本文来自博客园,作者:super_ip,转载请注明原文链接:https://www.cnblogs.com/superip/p/17437876.html