2022-10-12 16:39阅读: 25评论: 0推荐: 0

drf 自动生成路由对应关系+路由扩展

自动生成路由对应关系

路由

from rest_framework import routers

router = routers.SimpleRouter()
router.register(r'blog', blogViews.BlogView)
router.register(r'register', commonViews.RegisterView)
urlpatterns = [
    ...
]
urlpatterns += router.urls

from rest_framework import routers

router = routers.SimpleRouter()
router.register(r'blog', blogViews.BlogView)
router.register(r'register', commonViews.RegisterView)
urlpatterns = [
    path('', include((router.urls, 'app_name'), namespace='instance_name')),
]

BlogView,RegisterView为ViewSetMixin视图

image

路由扩展

view

class RegisterView(ModelViewSet):
    """
    post:
    注册
    """
    queryset = models.UserInfo.objects.all()
    serializer_class = RegisterModelSerializer
    pagination_class = PageNumberPagination

    # 重写perform_create
    def perform_create(self, serializer):
        serializer.validated_data.pop("confirm_password")
        serializer.save()

    def perform_update(self, serializer, instance):
        serializer.save()

    from rest_framework.decorators import action
    """
    methods 请求方式
    detail 是否是具体信息 list = false  info = true
    url_path 自定义url地址
    url_name 自定义url name
    """
    # url : 原来基础+get_list/
    @action(methods=['get'], detail=False, url_name=None)
    def get_list(self, request, pk):
        return Response(pk)

    # url : 原来基础+api1/pk/api1/
    @action(methods=['get'], detail=False, url_path="api1/(?P<pk>\d+)/api1", url_name=None)
    def api1(self, request, pk):
        return Response(pk)

    # url : 原来基础/pk/+get_info/
    @action(methods=['get'], detail=True, url_name=None)
    def get_info(self, request, pk):
        return Response(pk)

image

本文作者:Sherwin

本文链接:https://www.cnblogs.com/sherwin1995/p/16785026.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Sherwin_szw  阅读(25)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.