二、初步编写drf API

server/2024/9/29 21:31:38/

django_0">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测试,可以看到有返回数据

在这里插入图片描述

drf_30">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.

http://www.ppmy.cn/server/124662.html

相关文章

电子信息工程职称评审流程有哪些?

电子信息工程职称评审流程有哪些? 2024年工程类职称评审6大步骤: 1.确认申报条件 2.准备评审材料 3.提交评审材料 4.组织专家评审 5.进入答辩环节 6.职称公示下证 哪些人可以评电子信息工程呢? 从事微电子、计算机与网络、信息与通信、…

TCP编程:从入门到实践

目录 一、引言 二、TCP协议原理 1.面向连接 2.可靠传输 三、TCP编程实践 1.TCP服务器 2.TCP客户端 四、总结 本文将带你了解TCP编程的基本原理,并通过实战案例,教你如何在网络编程中运用TCP协议。掌握TCP编程,为构建稳定、高效的网络通信…

【ARM 嵌入式 C 入门及渐进26 -- 内敛函数和宏定义的区别】

请阅读【嵌入式及芯片开发学必备专栏】 文章目录 内敛函数和宏定义的区别内联函数定义和使用内联函数特点内联函数示例 宏定义和使用宏定义特点宏定义示例 比较总结Sumamry 内敛函数和宏定义的区别 在 C 语言中,内联函数和宏定义都可以用来减少函数调用的开销和提高…

Oracle 19c 使用EMCC 监控当前所有数据库

一.EMCC简介 EMCC,全称Oracle Enterprise Manager Cloud Control,是Oracle提供的一套集中化监控工具,可以对数据库、操作系统、中间件等进行监控,通过OMS(Oracle Management Service)收集监控数据并将监控信…

不同类型RWA在智能合约开发中的差异

RWA(现实世界资产)的类型多样,从房地产、艺术品到股票、债券等,每种资产的特性、价值评估方式、监管要求等都存在差异。这些差异直接影响到智能合约的设计和开发。 1.房地产RWA 复杂性高: 房地产涉及到土地使用权、建…

技术成神之路:设计模式(十五)中介者模式

介绍 中介者模式(Mediator Pattern)是一种行为型设计模式,用于减少对象之间的复杂通信和依赖。它通过引入一个中介者对象来封装对象之间的交互,从而使得对象之间不直接相互依赖,而是通过中介者进行通信。 1. 定义 中介…

docker和docker-compose安装

文章目录 一、问题背景二、脚本代码三、可能出现的问题四、手动安装1、上传文件2、授权3、检查版本 一、问题背景 我们在linux上通过docker部署应用时,需要先安装docker和docker-compose,每次安装时,都要参考文章,进行一系列操作&…

c++模拟真人鼠标轨迹算法

一.鼠标轨迹算法简介 鼠标轨迹底层实现采用 C / C语言,利用其高性能和系统级访问能力,开发出高效的鼠标轨迹模拟算法。通过将算法封装为 DLL(动态链接库),可以方便地在不同的编程环境中调用,实现跨语言的兼…