drf request的封装
路由
urlpatterns = [
path('order/', views.OrderView.as_view()),
]
视图关系
class View(object):
@classonlymethod
def as_view(cls, **initkwargs):
def view(request, *args, **kwargs):
return self.dispatch(request, *args, **kwargs)
return view
class APIView(View):
@classmethod
def as_view(cls, **initkwargs):
view = super().as_view(**initkwargs)
return csrf_exempt(view)
def dispatch(self, request, *args, **kwargs):
# 新request对象内部包含老request(_reuqest=老request)
request = self.initialize_request(request, *args, **kwargs)
self.request = request
self.initial(request, *args, **kwargs)
# 通过反射执行“get”方法,并传入新的request
handler = getattr(self, request.method.lower())
response = handler(request, *args, **kwargs) # get(requst)
return self.response
class OrderView(APIView):
def get(self,request,*args,**kwargs):
return Response('ok')
drf 对request的封装
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.request import Request
class UserView(APIView):
def get(self, request, *args, **kwargs):
# drf的request对象
print(request.query_params)
print(request.data)
print(request.auth)
print(request.user)
# django的request对象
print(request.GET)
print(request.method)
print(request.path_info)
return Response("...")
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16743998.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步