网站开发调查问卷,广东省建设执业资格注册中心网站,惠州市建筑信息平台,腾讯科技微信小程序1.View#xff1a;Django默认的视图基类,Django的HttpRequeset对象
2.APIView#xff1a;REST-framework提供的所有视图的基类,继承自Django的View REST framework的Request对象
Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果。
serializer Book…1.ViewDjango默认的视图基类,Django的HttpRequeset对象
2.APIViewREST-framework提供的所有视图的基类,继承自Django的View REST framework的Request对象
Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果。
serializer BookSerializer(book,manyTrue) 序列化获取字段 serializer.data 获取序列化后的数据 serializer BookSerializer(datadata) 反序列化传入字段 serializer.is_valid(raise_exceptionTrue) 校验并返回错误
3.GenericAPIView继承自APIView增加列表视图和详情视图的通用方法和属性
https://blog.csdn.net/qq_31742423/article/details/83241461
属性提前将要调用的设置好方法中直接调用就可以 queryset 设置结果集 ~queryset BookInfo.objects.all() serializer_class 设置序列化器 ~serializer_class BookSerializer lookup_field 查询指定的对象,默认为pk ~lookup_field id
方法 get_queryset(self) 返回视图使用的查询集 ~books self.get_queryset() get_serializer(self,_args, *_kwargs) 返回序列化器对象 ~serializer self.get_serializer(book) get_object(self) 返回详情视图所需的模型类数据对象 ~book self.get_object() # ListModelMixin 列表获取全部对象 # CreateModelMixin 新增资源 # RetrieveModelMixin 索引获取一个资源 # UpdateModelMixin 更新一个资源 # DestoryModelMixin 损毁删除一个资源 调用的时候和GenericAPIView一样放在类的括号里好像光放置首字母大写也可以
Patch 补丁,局部更新某一属性user_name,Put方法的补充 4.三级视图对GenericAPIView和Mixin的直接封装 第3和4算是一种关系
mixins类会返回不同的状态码 CreateAPIView 创造 ListAPIView 列表 RetrieveAPIView 检索 DestroyAPIView 损毁 UpdateAPIView 更新 ListCreateAPIView 列表创造 RetrieveUpdateAPIView 检索更新 RetrieveDestroyAPIView 检索删除 RetrieveUpdateDestroyAPIView 检索更新删除
导入封装的模型通过下面就可以更加简洁 from rest_framework import mixins class ProjectsView(mixins.ListModelMixin, mixins.CreateModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, GenericAPIView): # 增加所需属性 def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): return self.create(request, *args, **kwargs)
5.ViewSet继承自APIView
router DefaultRouter() 创建默认的本机地址 router.register(rbooklist,views.BookModelViewset) 会生成两种url user/ 列表 user/3 详情 urlpatterns router.urls 将建立好的url放在地址列表中 需要继承viewsets.ViewSet类 类的函数不需要使用get\post\delete等可以自建其他函数然后在路由中转 path(user/,view.MyViewSet.as_view({ get:list, })) https://zhuanlan.zhihu.com/p/72527077 序列化将数据库的数据模型转化为前端所需要的格式json等 反序列化可以验证传入数据是否规范并保存
反序列化拿到前端数据-序列化器的data-调用序列化器的is_vaid()方法 校验-调用序列化器的.sava()方法保存 ~~~url.py~~~
# viewsets # 封装drf路由 from rest_framework.routers import DefaultRouter # 创建路由器 routerDefaultRouter() # 注册路由 router.register(ruser_model_view_set,views.UserModelViewSet) # 将生成好的路由放在原路由 urlpatternsrouter.urls ~~~views.py~~~
# 这里使用的viewset from rest_framework import viewsets from rest1.serializers import UserModelViewSetSerializers # ViewSet class UserModelViewSet(viewsets.ModelViewSet): queryset UserInfo.objects.all() serializer_class UserModelViewSetSerializers lookup_field id ~~~serializers.py~~~
# ModelSerializer class UserModelViewSetSerializers(serializers.ModelSerializer): # 定义序列化器 # class Meta做为嵌套类主要目的是给上级类添加一些功能或者标准 class Meta: # 指定序列化从那个模型映射字段 modelUserInfo # 映射所有字段 fields__all__ # 填入指定字段 # fields (user_name, password) # 除了这个字段 # exclude (user_name,) # 含有外键的数据库设置depth为整数通常为1