DRF笔记

news/2024/12/22 10:06:29/

参考资料

http://www.yuan316.com/post/DRF/
全站最牛逼的DRF(Django-restframework),没有之一!

零、创建django项目

在这里插入图片描述

项目每次处相当于执行命令:django-admin startproject xxx

应用名称处:python manage.py startap
此外创建了虚拟环境、自动安装了django等

安装相应得包

pip install djangorestframework -i https://pypi.douban.com/simple
pip install pymysql -i https://pypi.douban.com/simple

一、CBV与FBV

  • FBV(Function-Based Views)基于函数的视图
# views.py
from django.shortcuts import  HttpResponse
from django.views.decorators.csrf import csrf_exempt@csrf_exempt
def book_views(request):if request.method == "GET":return HttpResponse("这是get")if request.method == "POST":return HttpResponse("这是post")if request.method == "DELETE":return HttpResponse("这是delete")if request.method == "PUT":return HttpResponse("这是put")
# urls.py
from django.urls import path
from app001 import views
urlpatterns = [# fbvpath('book/',views.book_views),
]
  • CBV(Class-Based Views)基于类的视图
# views.py
from django.shortcuts import  HttpResponse
from django.views import View
from django.utils.decorators import method_decorator@method_decorator(csrf_exempt, name='dispatch')  # 类视图禁止crsf
class BookView(View):def get(self, request):return HttpResponse("这是get")def post(self, request):return HttpResponse("这是post")def delete(self, request):return HttpResponse("这是delete")def put(self, request):return HttpResponse("这是put")
# urls.py
from django.urls import path
from app001 import views
urlpatterns = [# cbvpath('book/',views.BookView.as_view())
]
  • 注意

    1 urls.py 中使用book/访问时需要加上/,否则会转为get请求
    2 访问get外的其它请求,需要禁用csrf,cbv与fbv禁用方法是不一样的

二、APIView

在settings.py的INSTALLED_APPS中添加’rest_framework’

#settings.py
INSTALLED_APPS = [...'rest_framework',
]

需要将CBV中的class BookView(View)变为class BookView(APIView) 导入from rest_framework.views import APIView即可

# views.py
from rest_framework.views import APIView
from django.shortcuts import  HttpResponseclass BookView(APIView):def get(self, request):return HttpResponse("这是get")def post(self, request):return HttpResponse("这是post")def delete(self, request):return HttpResponse("这是delete")def put(self, request):return HttpResponse("这是put")

urls.py都不用改变

# urls.py
from django.urls import path
from app001 import views
urlpatterns = [# cbvpath('book/',views.BookView.as_view())
]

三、序列化与反序列化


http://www.ppmy.cn/news/1533701.html

相关文章

27 基于51单片机的方向盘模拟系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机,采用两个MPX4115压力传感器作为两路压力到位开关电路, 采用滑动变阻器连接数模转换器模拟重力加速度传感器电路; 一个按键控制LED灯的点亮与…

基于深度学习的乳腺癌分类识别与诊断系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 乳腺癌是全球最常见的癌症之一,早期诊断对于治疗效果至关重要。近年来,深度学习技术在医学图像分析领域取得了显著进展,能够从大量的医学影像数据中自动学习和提…

《C++ 小游戏:简易飞机大战游戏的实现》

文章目录 《C 游戏代码解析:简易飞机大战游戏的实现》一、游戏整体结构与功能概述二、各个类和函数的功能分析(一)BK类 - 背景类(二)hero_plane类 - 玩家飞机类(三)plane_bullet类 - 玩家飞机发…

《Python编程:从入门到实践》数据可视化

一、项目 数据可视化学习 二、库依赖 matplotlib,pygal, 三、生成数据 1.绘制简单的折线图 import matplotlib.pyplot as pltsquares [1, 4, 9, 16, 25] plt.plot(squares) plt.show() 模块pyplot包含很多用于生成图表的函数。 (1&am…

图像处理基础知识点简记

简单记录一下图像处理的基础知识点 一、取样 1、释义 图像的取样就是图像在空间上的离散化处理,即使空间上连续变化的图像离散化, 决定了图像的空间分辨率。 2、过程 简单描述一下图象取样的基本过程,首先用一个网格把待处理的图像覆盖,然后把每一小格上模拟图像的各个…

(8)mysql容器启动第一次无论输入密码与否均会报错处理

mysql容器启动第一次无论输入密码与否均会报错处理: #添加--skip-grant-tables参数跳过密码验证 docker run -d -p 13306:3306 -e MYSQL_ROOT_PASSWORD123456 -v /mysql/mysql-data:/var/lib/mysql -v /mysql/mysql-cnf/my.cnf:/etc/mysql/my.cnf --namemysql --re…

docker的harbor仓库登录问题

目录 一、问题描述 二、证书信任问题 三、DNS解析问题 四、解决 参考链接:Docker login Harbor报错解决:Error response from daemon: Get https:..-阿里云开发者社区 一、问题描述 问题: 挂机或者挂机重启之后harbor登录不上 查看日…

初试Bootstrap前端框架

文章目录 一、Bootstrap概述二、Bootstrap实例1、创建网页2、编写代码3、代码说明4、浏览网页,查看结果5、登录按钮事件处理6、浏览网页,查看结果 三、实战小结 一、Bootstrap概述 大家好,今天我们将一起学习一个非常流行的前端框架——Boot…