38.Django_类视图_router方法

urls.py文件中定义路由

from django.urls import path, include
from rest_framework import routers

from projects import views
from projects.views1 import ProjectsList, ProjectDetail
from . import views1

# ## 指定当前应用的命名空间
app_name = 'projects'


#1.创建路由对象
router = routers.SimpleRouter()

#2.注册路由
#第一个参数prefix为路由前缀,一般为应用名称
#第二个参数为视图集,不要加.as_view()
router.register(r'projects',views.ProjectsViewSet)

urlpatterns = [
 
#将自动生成的路由添加到urlpatterns中
  path('',include(router.urls))

]

urlpatterns += router.urls

修改views.py文件:

## 注意先继承mixins的方法
class ProjectsViewSet(viewsets.ModelViewSet):
    queryset = Projects.objects.all()
    serializer_class = ProjectsModelSerializer
    filter_backends = [DjangoFilterBackend]
    ordering_fields = ['name','id']
    filterset_fields = ['name','tester']


    #1.可以使用action装饰器来声明自定义动作
    #默认情况下,实例方法名称就是动作名称
    #methods参数用于指定该动作支持的请求方法,默认为get
    #detail参数用于指定该动作用处理的是否为详情对象,(url是否需要传递pk值)

    @action(methods=['get'],detail=False,url_path='nm',url_name='url_name')
    def names(self,request,*args,**kwargs):
         querset = self.get_queryset()
         serializer =  ProjectNameSerializer(instance=querset,many=True)
         return Response(serializer.data)


    @action(detail=False)
    def interfaces(self, request,*args,**kwargs):
        instance = self.get_object()
        serializer = InterfacesByProjectIdSerializer(instance = instance)
        return Response(serializer.data)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值