• 路由


    路由

    # 1 在url.py中配置
        path('books4/', views.Book4View.as_view()),
        re_path('books4/(?P<pk>d+)', views.Book4DetailView.as_view()),
        
    # 2 一旦视图类,继承了ViewSetMixin,路由
        path('books5/', views.Book5View.as_view(actions={'get': 'list', 'post': 'create'})),
        # 当路径匹配,又是get请求,会执行Book5View的list方法
        re_path('books5/(?P<pk>d+)',
                views.Book5View.as_view(actions={'get': 'retrieve', 'put': 'update', 'delete': 'destroy'})),
    
    # 3 继承自ModelViewSet的路由写法(自动生成路由)
    # 第一步:导入routers模块
    from rest_framework import routers
    
    # 第二步:有两个类,实例化得到对象
    # routers.DefaultRouter  生成的路由更多
    # routers.SimpleRouter
    
    # router = routers.SimpleRouter()
    router = routers.DefaultRouter()
    # 第三步:注册
    # router.register('前缀', '继承自ModelViewSet的视图类', '别名')
    router.register('books', views.BookViewSet,)  # 不要加斜杠了
    
    # 第四步:
    # router.urls # 自动生成的路由,加入到原路由中
    # print(router.urls)
    # urlpatterns += router.urls
    """
    [<URLPattern '^books/$' [name='book-list']>, 
    <URLPattern '^books/(?P<pk>[^/.]+)/$' [name='book-detail']>]
    """

    action的使用

    # action干什么用?为了给继承自ModelViewSet的视图类中定义的函数也添加路由
    # 使用
    from rest_framework.decorators import action  # 装饰器
    
    class BookViewSet(ModelViewSet):
        queryset = Book.objects.all()
        serializer_class = BookSerializer
    
        # methods第一个参数,传一个列表,列表中放请求方式
        # ^books/get_1/$ [name='book-get-1'] 当向这个地址发送get请求,会执行下面的函数
        # detail:布尔类型如果是True
        # detail=True(带pk的)/False(不带pk)
        # ^books/(?P<pk>[^/.]+)/get_1/$ [name='book-get-1']
        @action(methods=['get'], detail=True)
        def get_1(self, request, pk):
            print(pk)  # 1
            book = self.get_queryset()[:2]  # 从0开始截取一条
            ser = self.get_serializer(book, many=True)
            return Response(ser.data)
        
    # 装饰器,放在被装饰的函数上方,method:请求方式,detail:是否带pk
  • 相关阅读:
    C#学习笔记之——一些应用
    C#学习笔记之——面向对象编程
    C#学习笔记之——一些练习(包含了一些out的使用,string的使用,StringBuilder的使用,类的属性,最大公约数的求法,还有英雄,武器类的设置)
    C#学习笔记之——数据类型,引用参数,输出参数,数组参数,命名参数,可选参数
    C#学习笔记之——类、对象
    离散实践1
    计算机书籍
    2013年12月大学英语六级作文预测:挑战与改变
    TCP协议详解
    Uip学习简介及网址
  • 原文地址:https://www.cnblogs.com/ZhZhang12138/p/14875847.html
Copyright © 2020-2023  润新知