欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 二、初步编写drf API

二、初步编写drf API

2025/5/10 4:54:11 来源:https://blog.csdn.net/weixin_43631940/article/details/142618458  浏览:    关键词:二、初步编写drf API

2.1基于django

#settings.py
urlpatterns = [path('admin/', admin.site.urls),path('auth',views.auth)                       #创建一个路由
]
#views.py
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt# Create your views here.@csrf_exempt
def auth(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'])                #视图函数前面需要加上一个装饰器
def login(request):return Response({'status':True,'message':'success'})
#方法2:CBV: class basic views(基于类的视图)
class LoginView(APIView):def get(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
class UserView(View):#不同的请求,执行不同的值def get(self,request):#get请求执行的函数return JsonResponse({'status': True, 'message': 'GET'})def post(self,request):#post请求执行的函数return JsonResponse({'status': True, 'message': 'POST'})def put(self,request):#put请求执行的函数return JsonResponse({'status': True, 'message': 'PUT'})def delete(self,request):#delete请求执行的函数return JsonResponse({'status': True, 'message': 'DELETE'})

7、CBV示例2(drf)

from rest_framework.response import Response
from rest_framework.views import APIViewclass UserView1(APIView):  #drf中的函数自动套用了免除CRSF认证,相当于会自动给函数加一个@csrf_exempt装饰器def get(self,request):return Response({'status': True, 'message': 'GET'})def post(self,request):return Response({'status': True, 'message': 'POST'})def put(self,request):return Response({'status': True, 'message': 'PUT'})def delete(self,request):return Response({'status': True, 'message': 'DELETE'})
#APIView底层代码def as_view(cls, **initkwargs):"""用于免除CRSF认证Store the original class on the view function.This allows us to discover information about the view when we do URLreverse lookups.  Used for breadcrumb generation."""def dispatch(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.

版权声明:

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

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

热搜词