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.
版权归原作者 暮毅 所有, 如有侵权,请联系我们删除。