二、初步编写drf API

news2024/9/29 21:37:34

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 APIView

class 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 URL
        reverse 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.coloradmin.cn/o/2177882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一条sql在MySQL中是怎么执行的

目录 一、MySQL总体架构二、各层的作用1、连接层2、应用层3、存储引擎层 一、MySQL总体架构 作为常问八股文,相信不少小伙伴当年都被问到过这个问题,回答这个问题我们首先得知道MySQL服务器基本架构,主要分为连接层,应用层和存储…

【PyTorch】循环神经网络

循环神经网络是什么 Recurrent Neural Networks RNN:循环神经网络 处理不定长输入的模型常用于NLP及时间序列任务(输入数据具有前后关系) RNN网络结构 参考资料 Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs Und…

古代帝王与啤酒的不解之缘

在历史的长河中,古代帝王们的生活总是充满神秘与传奇。他们掌握着无上的权力,享受着世间的荣华富贵。而在这些帝王的日常生活中,有一种饮品始终伴随着他们,那便是精酿啤酒。今天,我们就来探寻古代帝王与啤酒之间的不解…

渗透测试实战—教育攻防演练信息收集

免责声明:文章来源于真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本…

【Python】数据可视化之热力图

热力图(Heatmap)是一种通过颜色深浅来展示数据分布、密度和强度等信息的可视化图表。它通过对色块着色来反映数据特征,使用户能够直观地理解数据模式,发现规律,并作出决策。 目录 基本原理 sns.heatmap 代码实现 基…

「OC」探索 KVC 的基础与应用

「OC」KVC的初步学习 文章目录 「OC」KVC的初步学习前言介绍KVC的相关方法key和keyPath的区别KVC的工作原理KVO的setValue:forKey原理KVO的ValueforKey原理 在集合之中KVC的用法1. mutableArrayValueForKey: 和 mutableArrayValueForKeyPath:2. mutableSetValueForKey: 和 muta…

【源码+文档+调试讲解】无人超市系统python

摘 要 随着科技的不断进步,无人超市成为了零售行业的新兴趋势。无人超市管理系统是支撑这一新型商业模式的关键软件基础设施。该系统采用python技术和MySQL数据库技术以及Django框架进行开发。通过高度自动化和智能化的方式,允许消费者在没有收银员的情…

WordPress LearnPress插件 SQL注入复现(CVE-2024-8522)

0x01 产品描述: LearnPress 是一款功能强大的 WordPress LMS(学习管理系统)插件,适用于创建和销售在线课程。凭借其直观的界面和丰富的功能,无论您是否具备编程背景,都能轻松搭建起在线教育网站。学会如何使…

【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(三)

文章目录 一、商品管理1、需求说明2、生成基础代码(1)创建目录菜单(2)配置代码生成信息(3)下载代码并导入项目 3、商品类型改造(1)基础页面 4、商品管理改造(1&#xff0…

【YOLO目标检测车牌数据集】共10000张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式:YOLO格式 图片数量:10000(2000张绿牌、8000张蓝牌) 标注数量(txt文件个数):10000 标注类别数:1 标注类别名称:licence 数据集下载:车牌数据…

docker 部署 Seatunnel 和 Seatunnel Web

docker 部署 Seatunnel 和 Seatunnel Web 说明: 部署方式前置条件,已经在宿主机上运行成功运行文件采用挂载宿主机目录的方式部署SeaTunnel Engine 采用的是混合模式集群 编写Dockerfile并打包镜像 Seatunnel FROM openjdk:8 WORKDIR /opt/seatunne…

在github上,如何只下载选中的文件?

GitHub官方不直接支持下载子目录,但可以使用特定的第三方工具或脚本来实现这一需求。 总而言之一句话:需要下载插件!!!具体实操步骤如下: 1.打开谷歌浏览器右上角的管理扩展程序: 2.搜索GitZi…

NLP任务之预测最后一个词

目录 1.加载预训练模型 2 从本地加载数据集 3.数据集处理 4.下游任务模型 5.测试代码 6.训练代码 7.保存训练好的模型 8. 加载 保存的模型 1.加载预训练模型 #加载预训练模型 from transformers import AutoTokenizer#预训练模型:distilgpt2 #use_fast…

《无机杀手》制作团队选择Blender的原因分析

《无机杀手》(Murder Drones)是一部备受欢迎的动画短片,其制作团队选择使用Blender软件进行制作,这一选择背后有着多方面的原因。【成都渲染101--blender渲染农场邀请码6666提供文案参考】 开源且免费 Blender是一个开源且免费的…

什么是数字化转型?数字化转型对企业有哪些优势?

一、什么是数字化转型? 定义: 数字化转型是指企业或组织将传统业务转化为数字化业务,利用人工智能、大数据、云计算、区块链、5G等数字技术提升业务效率和质量的过程。通俗来说,就是将数字技术应用到企业的各个方面,…

贝锐蒲公英网盘首发,秒建私有云,高速远程访问

虽然公共网盘带来了不少便利,但是大家对隐私泄露和重要数据泄密的担忧也随之增加。如果想要确保数据安全,自建私有云似乎是一条出路,然而面对搭建私有云的复杂步骤,许多人感到力不从心,NAS设备的成本也往往让人望而却步…

【MySQL】数据库中的内置函数

W...Y的主页 😊 代码仓库分享 💕 目录 函数 日期函数 字符串函数 数学函数 ​编辑 其它函数 MySQL数据库提供了大量的内置函数,这些函数可以帮助你执行各种操作,如字符串处理、数值计算、日期和时间处理等! 函数…

云计算Openstack Keystone

OpenStack Keystone是OpenStack平台中的一个核心组件,主要负责身份认证和授权管理服务。以下是关于OpenStack Keystone的详细介绍: 一、作用 身份认证:Keystone为OpenStack平台提供统一的身份认证服务,管理所有用户(…

ElasticSearch系列:【Win10环境(版本8.11.1) 】elasticsearch+kibana纪实

一、环境 安装环境:win10 JDK:1.8 elasticsearch:8.11.1 kibana:8.11.1 下载地址1(elasticsearchkibana):Past Releases of Elastic Stack Software | Elastic i下载地址2(k分…

RS HMP4040 直流电源

R&S HMP404 直流电源 苏州新利通仪器仪表 产品综述 单台仪器中最多四个通道 R&SHMP4000 直流电源具有三个或四个输出通道,每个通道的输出电流高达 10 A,主要设计用于工业应用,例如: -生产测试 -维护 -工程实验室 这些…