0


二、初步编写drf API

2.1基于django

#settings.py
urlpatterns =[
    path('admin/', admin.site.urls),
    path('auth',views.auth)#创建一个路由]
#views.pyfrom django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt

# Create your views here.@csrf_exemptdefauth(request):return JsonResponse({'status':True,'message':'success'})

使用postman测试,可以看到有返回数据

在这里插入图片描述

2.2基于drf

1.安装drf

pip3 install djangorestframework

2.注册drf

#settings.py
INSTALLED_APPS =['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app1.apps.App1Config',# 添加应用名称(appName.apps.className)'rest_framework',#注册drf]

3、注册路由

#url.py
urlpatterns =[
    path('admin/', admin.site.urls),
    path('auth/',views.auth),
    path('login1/',views.login),                   #drf视图路由(方法1:FBV)
    path('login2/',views.LoginView.as_view())#drf视图路由(方法2:CBV)]

4、创建drf视图函数

#方法1:FBV: function basic views(基于函数的视图)from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.decorators import api_view

@api_view(['GET'])#视图函数前面需要加上一个装饰器deflogin(request):return Response({'status':True,'message':'success'})
#方法2:CBV: class basic views(基于类的视图)classLoginView(APIView):defget(self,request):return Response({'status':True,'message':'success'})

5、查看效果

用浏览器访问login,这里可以看到,Response返回的信息,被drf的基本页面包裹(以上两种方法效果相同)
在这里插入图片描述

6、CBV示例1(jdango)

from django.http import JsonResponse
from django.views import View
classUserView(View):#不同的请求,执行不同的值defget(self,request):#get请求执行的函数return JsonResponse({'status':True,'message':'GET'})defpost(self,request):#post请求执行的函数return JsonResponse({'status':True,'message':'POST'})defput(self,request):#put请求执行的函数return JsonResponse({'status':True,'message':'PUT'})defdelete(self,request):#delete请求执行的函数return JsonResponse({'status':True,'message':'DELETE'})

7、CBV示例2(drf)

from rest_framework.response import Response
from rest_framework.views import APIView

classUserView1(APIView):#drf中的函数自动套用了免除CRSF认证,相当于会自动给函数加一个@csrf_exempt装饰器defget(self,request):return Response({'status':True,'message':'GET'})defpost(self,request):return Response({'status':True,'message':'POST'})defput(self,request):return Response({'status':True,'message':'PUT'})defdelete(self,request):return Response({'status':True,'message':'DELETE'})
#APIView底层代码defas_view(cls,**initkwargs):"""
        用于免除CRSF认证
        Store the original class on the view function.

        This allows us to discover information about the view when we do URL
        reverse lookups.  Used for breadcrumb generation.
        """defdispatch(self, request,*args,**kwargs):#视图执行前、反射执行视图,视图后处理#判断用户请求类型,以执行相对应的函数# Try to dispatch to the right method; if a method doesn't exist,# defer to the error handler. Also defer to the error handler if the# request method isn't on the approved list.
标签: sqlite 数据库 django

本文转载自: https://blog.csdn.net/weixin_43631940/article/details/142618458
版权归原作者 暮毅 所有, 如有侵权,请联系我们删除。

“二、初步编写drf API”的评论:

还没有评论