当前位置: 首页 > news >正文

做竞价网站需要什么样的空间广西桂林公司

做竞价网站需要什么样的空间,广西桂林公司,太原网站建设网格未来,烟台市住房和规划建设管理局网站DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射) 目录 DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射)2个视图基类mixins的5个视图扩展类generics的9个视图子类视图集自定制返回格式自动生成路由(SimpleRouter)action装饰器…DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射) 目录 DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射)2个视图基类mixins的5个视图扩展类generics的9个视图子类视图集自定制返回格式自动生成路由(SimpleRouter)action装饰器 2个视图基类 原APIView写法 from rest_framework.views import APIViewclass publish(APIView):def get(self, request):publish_obj models.Publish.objects.all()serializer PublishSerializer(instancepublish_obj, manyTrue)return Response({code: 200, msg: 查询成功, result: serializer.data})def post(self, request):serializer PublishSerializer(datarequest.data)if serializer.is_valid():serializer.save()return Response({code: 200, msg: 添加成功, result: serializer.data})else:return Response({code: 900, msg: serializer.errors})class publish_detail(APIView):def get(self, request, u_id):publish_obj models.Publish.objects.get(idu_id)serializer PublishSerializer(instancepublish_obj)return Response({code: 200, msg: 查询成功, result: serializer.data})def delete(self, request, u_id):passdef put(self, request, u_id):publish_obj models.Author.objects.filter(pku_id).first()# 改对象必须传data和instanceserializer PublishSerializer(instancepublish_obj, datarequest.data)if serializer.is_valid():serializer.save()return Response({code: 200, msg: 修改成功, result: serializer.data})else:return Response({code: 201, msg: serializer.errors})GenericAPIView类改写 from rest_framework.generics import GenericAPIViewclass publish(GenericAPIView):queryset models.Publish.objects.all()serializer_class PublishSerializerdef get(self, request):publish_obj self.get_queryset()serializer self.get_serializer(instancepublish_obj, manyTrue)return Response({code: 200, msg: 查询成功, result: serializer.data})def post(self, request):serializer self.get_serializer(datarequest.data)if serializer.is_valid():serializer.save()return Response({code: 200, msg: 添加成功, result: serializer.data})else:return Response({code: 900, msg: serializer.errors})class publish_detail(GenericAPIView):queryset models.Publish.objects.all()serializer_class PublishSerializerdef get(self, request, pk):publish_obj self.get_object()serializer self.get_serializer(instancepublish_obj)return Response({code: 200, msg: 查询成功, result: serializer.data})def delete(self, request, pk):self.get_object().delete()return Response({code: 200, msg: 删除成功})def put(self, request, pk):publish_obj self.get_object()# 改对象必须传data和instanceserializer self.get_serializer(instancepublish_obj, datarequest.data)if serializer.is_valid():serializer.save()return Response({code: 200, msg: 修改成功, result: serializer.data})else:return Response({code: 201, msg: serializer.errors})queryset models.Publish.objects.all()查询所有数据serializer_class PublishSerializer获取序列化类本文未展示publish_obj self.get_queryset()获取所有数据serializer self.get_serializer(instancepublish_obj, manyTrue)使用定义好的序列化类self.get_object()这里不需要传入pk直接用它定义好的方法但是它默认识别的只有pk取其他名会报错 mixins的5个视图扩展类 CreateModelMixin新增 ListModelMixin查询所有 DestroyModelMixin删除单条 UpdateModelMixin修改单条 RetrieveModelMixin查询单条 from rest_framework.generics import GenericAPIView from rest_framework.mixins import CreateModelMixin, ListModelMixin, DestroyModelMixin, RetrieveModelMixin, \UpdateModelMixinclass publish(GenericAPIView, CreateModelMixin, ListModelMixin):queryset models.Publish.objects.all()serializer_class PublishSerializerdef get(self, request):res super().list(request)return Response({code: 200, msg: 查询成功, result: res.data})def post(self, request):res super().create(request)print(type(res))return Response({code: 200, msg: 添加成功, result: res.data})class publish_detail(GenericAPIView, RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin):queryset models.Publish.objects.all()serializer_class PublishSerializerdef get(self, request, *args, **kwargs):res super().retrieve(request, *args, **kwargs)return Response({code: 200, msg: 查询成功, result: res.data})def delete(self, request, *args, **kwargs):res super().destroy(request, *args, **kwargs)return Response({code: 200, msg: 删除成功})def put(self, request, *args, **kwargs):res super().update(request, *args, **kwargs)return Response({code: 200, msg: 修改成功, result: res.data})res super().list(request)调用ListModelMixin类中的list方法可以省去查询数据和序列化的书写下面的都一样注res是一个 Response 实例而不是一个序列化器实例因此对返回值调用 .is_valid()之类的方法会报AttributeError generics的9个视图子类 CreateAPIView新增DestroyAPIView删除ListAPIView查询所有ListCreateAPIView查询所有和新增的合并RetrieveAPIView查询单个RetrieveDestroyAPIView查询单个和删除的合并RetrieveUpdateAPIView查询单个和修改的合并RetrieveUpdateDestroyAPIView查询单个、修改和删除的合并UpdateAPIView修改 from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIViewclass publish(ListCreateAPIView):queryset models.Publish.objects.all()serializer_class PublishSerializerclass publish_detail(RetrieveUpdateDestroyAPIView):queryset models.Publish.objects.all()serializer_class PublishSerializer视图集 # views.py from rest_framework.viewsets import ModelViewSetclass publish(ModelViewSet):queryset models.Publish.objects.all()serializer_class PublishSerializer# urls.py from django.contrib import admin from django.urls import path from app import viewsurlpatterns [path(publish/, views.publish.as_view({get: list, post: create})),path(publish/str:pk/, views.publish.as_view({get: retrieve, put: update, delete: destroy})), ]此时就不需要再分一个publish_detail类了ModelviewSet已经帮你把五个接口全部写好了只需在路由层添加映射get: list表示遇到get请求时执行list方法其他的也是 自定制返回格式 不管是视图子类还是视图集需要自定制返回字段时只需重写所需方法就行 例如我要自定制查询所有的返回值就重写list class publish(ListCreateAPIView):queryset models.Publish.objects.all()serializer_class PublishSerializerdef list(self, request, *args, **kwargs):res super().list(request, *args, **kwargs)res.data {code: 200, msg: 查询成功, result: res.data}return Response(res.data)res.data默认返回的是一个包含多个字典的列表 自动生成路由(SimpleRouter) # urls.py from rest_framework.routers import SimpleRouter from app import views# 实例对象 router SimpleRouter() # 将publish类注册最左边的publish为浏览器输入的路由最右边的publish是别名 router.register(publish, views.publish, publish)urlpatterns [ ] # 将注册好的路由添加进urlpatterns现在得到的路由其实就是http://127.0.0.1:8000/publish/调用的视图类是publish并且pk它也会自动帮你写好 与SimpleRouter类似的还有DefaultRouter他俩基本用法完全一致唯一不同的是DefaultRouter会返回一个根路径 SimpleRouter DefaultRouter 点进Api Root后可以看到它返回了一个根路径 {publish: http://127.0.0.1:8000/publish/ }action装饰器 SimpleRouter自动生成路由后有一个弊端就是当绑定的类中没有get\path这种方法名时会注册失败 例如我现在有一个login方法我想让他接受get请求实现查询单个的功能要,只需在上面价加个action装饰器 # views.py from rest_framework.viewsets import ModelViewSet from rest_framework.decorators import actionclass publish(ModelViewSet):action(methods[GET], detailFalse)def login(self, request)action参数(methodsNone, detailNone, url_pathNone, url_nameNone, **kwargs): methods包含被允许的请求方法detail指定是否需要提供对象的详细信息url_path指定自定义的 URL 路径url_name指定自定义的 URL 名称
http://www.zqtcl.cn/news/237/

相关文章:

  • 所有网站都要备案吗网站的颜色
  • 网站开发怎么连接sqlserver百度风云榜电视剧排行榜
  • 建设银行 网站无法打开优酷网站模板下载
  • 长沙门户网站开发电脑上怎么做设计效果图
  • 商城网站建设php佛山 网站设计公司
  • 湖南网站设计制作wordpress 自动邮件
  • 有什么做网兼的网站好三网网站
  • 北京网站备案拍照龙岗住房和建设局网站官网
  • 汽车 营销 网站建设重庆建设工程人力资源官网
  • 精美个人网站wordpress 服务器
  • 深圳的网站设计网站建设app开发公司
  • 承德很好的网络建站wap网站引导页特效
  • 湖北中英双语网站建设视频网站后台功能
  • 制作个人免费网站展示设计网站公众号信息化建设工作计划
  • 平面设计有什么网站吴江网站优化
  • 保定聊城网站建设专业的网站建设排名
  • 郑州有哪些搞网站开发的公司杭州抖音seo
  • 代发网站建设教程app与移动网站开发资料
  • 做网站卖货团购网站建设案例
  • 网站编排类型一个网站备案多个域名吗
  • 济南公司快速建站wordpress新用户管理
  • 门户网站建设如何入账销量不高的网站怎么做
  • 青岛网站制作公司工信部网站备案号
  • 张掖网站制作茂名网站建设方案书
  • 视频网站 界面设计专业网站制作哪里好
  • 沙井网站优化网络营销策略包括哪几大策略
  • 亳州网站建设推广京东的网站建设历史
  • 同域名网站改版需要把之前网站里的文章都拷贝过来吗?建站小程序编辑器闪亮登场
  • 淘宝网站建设流程网站开发跟软件开发
  • 做模型的网站长沙网站推广系统