zoukankan      html  css  js  c++  java
  • Django-11-自动生成routers路由、自定义action

    1、自动生成路由

    from rest_framework import routers

    # 1、创建路由对象
    # a.DefaultRouter与SimpleRouter功能类似,不过会自动添加一个根路由(作为获取当前数据的入口)
    router = routers.SimpleRouter()
    # router = routers.DefaultRouter()
    
    # 2、注册路由
    # a.第一个参数为路由前缀
    # b.第二个参数为视图集
    # c.使用视图集中的路由机制,只会为特定的action自动生成路由条件
    # 特定的action:retrieve、update、list、create等
    router.register(r'projects', views.ProjectViewSet)

    urlpatterns = [  ]
    # 3、合并路径条目 urlpatterns += router.urls

    自定义的action,不会自动生成路由条目

    1、可以手动在urlpatterns添加路由映射

    2、添加action装饰器(见下方2)

    2、自定义action

    from rest_framework.decorators import action

    a.如果需要使用视图集中的路由机制来为自定义的action,自动生成路由条目,那么需要使用action

    b.methods参数默认为get方法,可以在列表中指定多个请求方法

    c.detail指定是否需要接收模型主键值,如果无需接收主键值,那么需要设置detail=False,否则需要设置detail=True

    d.url_path指定生成的路由条目路径名,默认为自定义action方法名称

    e.url_name指定生成的路由名称后缀,默认为自定义action方法名称

    @action(methods=['get'], detail=False, url_path='pp', url_name='nn')

        @action(methods=['get'], detail=False)
        def names(self, request):
            queryset = self.get_queryset()
            names_list = [{'id': project.id, 'name': project.name} for project in queryset]
            return Response(names_list, status=status.HTTP_200_OK)
    
        @action(detail=True)
        def interfaces(self, request, *args, **kwargs):
            project = self.get_object()
            interface_qs = project.interfaces.all()
            interfaces_list = [{'id': interface.id, 'name': interface.name} for interface in interface_qs]
            return Response(interfaces_list, status=status.HTTP_200_OK)

     

  • 相关阅读:
    netstat命令
    为什么 netstat 对某些服务只显示了 tcp6 监听端口
    端口状态说明 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT
    进程启动时主线程创建过程分析
    [Kali]关机卡死,google拼音无法输入
    [白帽子讲WEB安全]XSS <Cross Site Script>
    [白帽子将WEB安全笔记]浏览器安全
    [白帽子将WEB安全笔记]我的安全世界观
    mongodb高可用集群 3 ---分片与副本集结合
    python计算年龄小程序
  • 原文地址:https://www.cnblogs.com/erchun/p/14490943.html
Copyright © 2011-2022 走看看