欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > DRF——router路由,parser解析器

DRF——router路由,parser解析器

2025/10/13 4:33:05 来源:https://blog.csdn.net/m0_66925868/article/details/141501358  浏览:    关键词:DRF——router路由,parser解析器

文章目录

      • 路由
      • 解析器
        • 1.JSONParser
        • 2.FormParser
        • 3.MultiPartParser
        • 4.FileUploadParser

路由

在之前进行drf开发时,对于路由我们一般进行两种配置:

  • 视图继承APIView

    from django.urls import path
    from app01 import viewsurlpatterns = [path('api/users/', views.UserView.as_view()),
    ]
    
  • 视图继承 ViewSetMixin(GenericViewSet、ModelViewSet)

    from django.urls import path, re_path, include
    from app01 import viewsurlpatterns = [path('api/users/', views.UserView.as_view({"get":"list","post":"create"})),path('api/users/<int:pk>/', views.UserView.as_view({"get":"retrieve","put":"update","patch":"partial_update","delete":"destory"})),
    ]
    

    对于这种形式的路由,drf中提供了更简便的方式:

    可以使用rest_framework中的router来简化视图函数继承GenericViewSet或者ModelViewSet是的路由分发

    from rest_framework import routers
    from app01 import viewsrouter = routers.SimpleRouter()
    router.register(r'api/users', views.UserView)urlpatterns = [# 其他URL# path('xxxx/', xxxx.as_view()),
    ]urlpatterns += router.urls
    

    也可以利用include,给URL加前缀:

    from django.urls import path, include
    from rest_framework import routers
    from app01 import viewsrouter = routers.SimpleRouter()
    router.register(r'users', views.UserView)urlpatterns = [path('api/', include((router.urls, 'app_name'), namespace='instance_name')),# 其他URL# path('forgot-password/', ForgotPasswordFormView.as_view()),
    ]
    

解析器

之前使用 request.data 获取请求体中的数据。

这个 reqeust.data 的数据怎么来的呢?其实在drf内部是由解析器,根据请求者传入的数据格式 + 请求头来进行处理。

1.JSONParser

在这里插入图片描述

2.FormParser

在这里插入图片描述

3.MultiPartParser

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:8000/test/" method="post" enctype="multipart/form-data"><input type="text" name="user" /><input type="file" name="img"><input type="submit" value="提交"></form>
</body>
</html>
4.FileUploadParser

在这里插入图片描述

解析器可以设置多个:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.parsers import MultiPartParser, JSONParser, FormParserclass UserView(APIView):def post(self, request):print(request.content_type)print(request.data)return Response("...")

drf默认使用3个解析器:

'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'

若有错误与不足请指出,关注DPT一起进步吧!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词