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视图
路由扩展
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)
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16785026.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步