Django/drf的CBV---面向资源开发--及相应 (指定一个类里面默认有get 和 post等请求方法,你去实现)--apiview
https://www.bilibili.com/video/BV1z5411D7BQ?p=3&vd_source=caabcbd2a759a67e2a3de8acbaaf08ea



get、post 那些方法都是固定的,只要请求使用对应的请求方式就会触发
用cbv就是面向资源开发,比如下面的接口都是面向students去开发接口,根据请求方法确定动作,uri是没有动词的

换成rf的APIView 效果一样的
记得要在setting文件加上 'rest_framework'
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'OneApp',
'rest_framework' ---这个
]

具体
urls
from api import views //自己的视图层
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
urlpatterns = [
path(r'getsql/', views.BookView.as_view()),
]
views
from django.http import HttpResponse
from rest_framework.views import APIView
class BookView(APIView):
def get(self,request):
return HttpResponse("123")
Response响应
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
class Test(APIView):
def get(self,request):
return Response(
data=123, # 返回的信息
status=status.HTTP_204_NO_CONTENT, # 代表成功
headers={"token": "xxxx"},
)
常用响应码
HTTP_200_OK = 200
HTTP_301_MOVED_PERMANENTLY = 301
HTTP_400_BAD_REQUEST = 400
HTTP_401_UNAUTHORIZED = 401
HTTP_500_INTERNAL_SERVER_ERROR = 500
用drf的他会返回页面or接口,具体怎么设置见下方链接
参考: http://www.manongjc.com/detail/20-unwpxkvhounfvxi.html
例子
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status #保存了所有HTTP响应状态对应的常量
class BookView(APIView):
def post(self,request):
'''获取请求体数据'''
print(request.data) #直接可以接收前端传过来json 或者表单数据 {"name":123}
print(request.data.get("name"))
'''获取查询参数'''
print(request.query_params) #/?aa=111
print(request.query_params.get("aa"))
return Response({'status': "1000"},status=status.HTTP_201_CREATED,headers={"token":"11111"});
get获取url上面的参数的2种方法
方法一:
view.py
from rest_framework.views import APIView
class BookView2(APIView):
def get(self, request,**kwargs):
obj = kwargs.get('user_id')
return Response(obj)
url.py
url('^book/(?P<user_id>.*)', views.BookView2.as_view()),
方法二:
view.py
from rest_framework.views import APIView
class BookView2(APIView):
def get(self,request,aa):
print(aa) ##获取uri上面的
print(request.query_params) ##获取url后面拼接的参数
return Response(123)
url.py
url('^book/(\d+)/$', views.BookView2.as_view()),
请求 http://127.0.0.1:8000/book/1/?aa=2

浙公网安备 33010602011771号