当前位置: 首页 > 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.pierceye.com/news/237/

相关文章:

  • 什么是网站建设的建议什么人做网站
  • 公司企业网站建设步骤上海网站建设联系方式
  • 做艺人资料卡的网站社保服务个人网站
  • 营销型企业网站建设的流程是公司网站开发人员离职后修改公司网站
  • 做gif动图的网站犯法吗网页的设计流程是怎样的
  • 给个高质量的网站word用来做网站的
  • 外贸公司网站建设费用 如何申请国家信用信息公示系统广东
  • 洪梅网站建设公司网站建立明细预计表
  • 定制产品网站河南新闻头条最新消息
  • 上海网站开发多少钱怎样查找网站域名
  • 吉林大学建设工程学院网站百度小程序官网
  • 城乡建设部网站首页甲级wordpress系统下载
  • 江苏优质网站制作公司杭州企业网站建设公司怎么样
  • 企业网站建设规划电子商务网站建设参考文献2018
  • 网页设计及制作方法南京网站建设 seo
  • 在沈阳做一个展示网站多少钱做盗版电影网站教程
  • 深圳网站建房个人网站制作手绘
  • 精品网站建设价格网页设计图片大小代码
  • 手机图片网站源码东莞微网站制作
  • 沭阳哪里可以做网站WordPress中文改英文版
  • 科创纵横 网站建设开发直播app赚钱吗
  • 做外贸网站流程网站建设有哪些板块
  • 南通网站建设策划秦皇岛网站开发
  • 广州快速建站公司推荐上海画册设计
  • 怎么提高网站访问速度我的钢铁网网站架构
  • 站长工具seo域名解析不了网站服务器搬家
  • 建设专业网站排名绵阳做seo网站公司
  • 建设机械员证书查询网站闵行区地图
  • 南山区住房和建设局网站wordpress工作室主题下载
  • 宁海哪里有做网站的专门做二手手机的网站吗