DRF之自动生成路由

一、视图集ModelViewSet自动生成路由:

1、导入routers模块

from rest_framework import routers 
#SimpleRouter(一般都使用这个)
#DefaultRouter(生成路由比较多)

2、实例化路由类,得到对象:

router=routers.SimpleRouter()

3、注册路由

’‘’
#register('前缀‘,views文件中我们自定义的视图集函数,别名)
#url(r'^book/',views.UserModelSet),前缀就等价于url的 book
‘’‘
router.register('book',views.UserModelSet)

4、加入到原路由:

urlpatterns +=router.urls

生成接口如下:

#put、get、delete请求方法
http://127.0.0.1:8000/app04/book/pk/
#get、post请求
http://127.0.0.1:8000/app04/book/

完整代码如下:

#urls.py文件

from django.conf.urls import url
from rest_framework.routers import SimpleRouter,DefaultRouter
from app04 import views
#实例化对象
route=SimpleRouter()
#注册路由
route.register('book',views.UserModelSet,)
urlpatterns = [

]
#添加路由
urlpatterns +=route.urls

views.py文件

from app04.models import User,UserToken
from app04.ser import UserSer,UserToken
from rest_framework.viewsets import ModelViewSet
# Create your views here.

class UserModelSet(ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSer

二、给视图类中自定义函数添加路由

1、导入一个action装饰器

from rest_framework.decorators import action

2、在自定义函数中添加action装饰器

class UserModelSet(ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSer
    '''
    methods参数对应是一个列表,用来放请求方法
    detail=false,接口连接如下
    #^book/get_2/$ [name='book-get-1']
    detail=True
    #^book/(?P<pk>[^/.]+)/get_2/$ [name='book-get-1']
    detail:是决定是否带pk
    methods是请求方法
    '''
    @action(methods=['get'],detail=False)
    def get_2(self,reqeust):
        user=self.get_queryset()[0:2]
        ser=self.get_serializer(user,many=True)
        return Response(ser.data)  

最终给自定义get_2方法添加的路由如下:
http://127.0.0.1:8000/app04/book/get_2/
http://127.0.0.1:8000/app04/book/pk/get_2/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值