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)


浙公网安备 33010602011771号