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

安阳专业网站建设软通动力外包值得去吗

安阳专业网站建设,软通动力外包值得去吗,怎么建设自己网站的后台,苏州做公司邮箱企业网站之前我们的视图类可以继承GenericViewSet或者ModelViewSet#xff0c;我们不用再自定义通用的action方法#xff0c;但是有时候我们需要自定义action#xff0c;我们该如何设计呢#xff1f; 自定义action 1、手写视图逻辑 1.1、先在视图集里自定义action方法#xff0…之前我们的视图类可以继承GenericViewSet或者ModelViewSet我们不用再自定义通用的action方法但是有时候我们需要自定义action我们该如何设计呢 自定义action 1、手写视图逻辑 1.1、先在视图集里自定义action方法名称为names class ProjectsViewSet(viewsets.ModelViewSet):# 指定当前类视图需要使用的查询集queryset ProjectsModel.objects.all()# 指定当前类视图需要使用的序列化器类serializer_class ProjectModelSerializer# lookup_field Id# 声明需要使用的引擎类filter_backends [filters.SearchFilter,filters.OrderingFilter]# 定义需要过滤的字段search_fields [name, id]# 定义需要排序的字段ordering_fields [id, name]# 声明需要使用的分页引擎pagination_class PageNumberPaginationaction(methods[GET, POST], detailFalse)def names(self, request, *args, **kwargs):qs self.get_queryset()lst []for obj in qs:dict {id: obj.id,name: obj.name,}lst.append(dict)return Response(lst, content_typeapplication/json) 1.2、在路由表url.py中定义新的路由 urlpatterns [path(projects/names/,views.ProjectsViewSet.as_view({get:names,post:names})), ] 支持get和post请求方式 2、使用序列化器类 2.1创建一个新的序列化器类 class ProjectNameSerializer(serializers.ModelSerializer):class Meta:model ProjectsModelfields (id, name) 2.2路由表定义路由 urlpatterns [path(projects/names/,views.ProjectsViewSet.as_view({get:names,post:names})), ] 仅仅只有视图集继承Viewset或者GenericViewset之后才具备方法名与action进行一一对应的功能  2.3 重写视图类中的自定义action方法 from .serializers import ProjectNameSerializeraction(methods[GET, POST], detailFalse)def names(self, request, *args, **kwargs):qs self.get_queryset()# lst []# for obj in qs:# dict {# id: obj.id,# name: obj.name,# }# lst.append(dict)# return Response(lst, content_typeapplication/json)serializer_obj ProjectNameSerializer(instanceqs, manyTrue)return Response(serializer_obj.data, statusstatus.HTTP_200_OK) 2.4 将ProjectNameSerializer抽离出来并且重写get_serializer_class方法 如果当前类视图中使用了多个不同的序列化器类那么可以将get_serializer_class重写继承视图集类之后会提供action属性指定当前请求的action方法名称可以根据不同的action去选择不同的序列化器类不同的查询集 action(methods[GET, POST], detailFalse)def names(self, request, *args, **kwargs):qs self.get_queryset()serializer_objself.get_serializer(instanceqs, manyTrue)return Response(serializer_obj.data, statusstatus.HTTP_200_OK)def get_serializer_class(self):if self.actionnames:return ProjectNameSerializerreturn self.serializer_class 如果请求的是/projects/names/使用的是自定义的序列化器类进行数据输出 如果请求的是其他路由路径能够使用全局指定的序列化器类serializer_classProjectModelSerializer正常处理数据进行序列化输出 可以使用action装饰器指定自定义action方法使用路由器时会自动生成路由条目如果不指定methods那么当前action只支持GET方法请求可以指定当前action支持多个请求方法需要将请求方法大写添加至列表中detail指定当前action是否为详情视图url_path指定url的路径字符串url_name指定url路径的名称如果不指定url_path和url_name默认为action方法名称 注册路由 在路由表中导入routers from rest_framework import routersrouter routers.SimpleRouter() # 注册路由 router.register(rprojects, views.ProjectsViewSet)urlpatterns router.urls ​ 注册路由 仅仅只有视图集才支持定义路由器功能register方法可以注册路由条目第一个参数为路由条目的前缀往往需要添加r子应用名第二个参数为视图集对象无需调用as_view({}) 可以定义DefaultRouter对象相比SimpleRouter路由对象会自动添加一个根路由指定当前项目的入口地址 router routers.DefaultRouter()   如果没有指定url_path和url_name则通过路由名称去获取URL路径 如果在action里指定了url_path和url_name则url_path指定url的路径字符串url_name指定url路径的名称 action(methods[GET, POST], detailFalse,url_pathna, url_namean) def names(self, request, *args, **kwargs):qs self.get_queryset() 有时候有些路由我们不想通过路由器生成需要在urlpatterns里生成 方式一可以附加router.urls到现有视图的列表. from rest_framework import routersrouter routers.SimpleRouter() # 注册路由 router.register(rprojects, views.ProjectsViewSet) urlpatterns [] urlpatterns router.urls方式二或者可以使用 Django 的include函数就像这样 from rest_framework import routersrouter routers.SimpleRouter() # 注册路由 router.register(rprojects, views.ProjectsViewSet) urlpatterns [path(, include(router.urls)) ]
http://wiki.neutronadmin.com/news/40308/

相关文章:

  • 网站出现500wordpress 基于 网店
  • 龙华营销型网站制作哪家好建设工程合同的内容
  • iis管理器添加网站单页网站编辑器
  • 企业展厅设计公司100%正品保障十堰seo优化教程
  • 站长工具下载appdede免费模板教育网站
  • 房地产网站策划书wordpress xml导入
  • 一起做网站注册地址大连网站建设好的公司
  • 怎么制作网站详细流程建网站能挣钱吗
  • 上海网站seo诊断装潢设计学校有哪些
  • 网站 自助建站wordpress vip会员插件
  • 建立网站 多少钱广东网页空间购买
  • 上海交通大学网站建设服务公司沈傲芳
  • 购物网站建设怎么样官方网站建设银行年利息是多少钱
  • 广州市官网网站建设公司香河县做网站
  • 用jquery做网站好吗徐州市工程招标网
  • 网站设计的国际专业流程是什么乐山的网站建设公司
  • 网站建设公司广告语宣传语优化网站的网站
  • 建设信息门户网站的条件浙江建设干部学校网站首页
  • 怎么建商城网站吗北票网站建设
  • 做企业网站进行推广要多少钱建邺做网站价格
  • 如何自己弄个免费网站网站建设需要找工信部吗
  • 怎样做网站网站唐山正规做网站的公司
  • 1万网站建设费入什么科目直播视频素材
  • wordpress电影站数据下载网站域名空间一年费用是多少钱
  • 学校网站怎么做的做pc网站会连带手机版
  • 肥料网站建设 中企动力铜陵高端网站建设
  • 怎么做网站的百度收录dedecms官网
  • 沧州南皮网站建设公司怎么做ppt
  • 网站ip地址是什么网站建设收获与体会
  • 鹿邑建设局官方网站设计绘图软件