当前位置: 首页 > article >正文

DRF笔记

参考资料

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 = [
    # fbv
    path('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 = [
     # cbv
    path('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  HttpResponse

class 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 = [
     # cbv
    path('book/',views.BookView.as_view())
]

三、序列化与反序列化


http://www.kler.cn/news/329550.html

相关文章:

  • Qt --- 常用控件的介绍---Widget属性介绍
  • 如何隐藏Windows10「安全删除硬件」里的USB无线网卡
  • 计算机毕业设计 智能旅游推荐平台的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 【MySQL 06】表的增删查改
  • Word样式的同步与重置
  • Golang | Leetcode Golang题解之第437题路径总和III
  • LeetCode从入门到超凡(四)深入浅出理解贪心算法
  • 使用Electron将vue项目改桌面程序
  • SpringBoot学习笔记(2)
  • 服务器感染了.baxia勒索病毒,如何确保数据文件完整恢复?
  • 通信工程学习:什么是POP3邮局协议版本3
  • 如何使用MethodChannel通信
  • 匈牙利算法模板
  • java项目实现钉钉异常告警实时监控
  • django使用笔记1--快速开始
  • [Linux] Linux 的进程如何调度——Linux的 O(1)进程调度算法
  • [深度学习]循环神经网络RNN
  • ARM 汇编5 数据类型
  • 【HTML5】html5开篇基础(3)
  • 基于AI大模型应用开发有哪几种方式?
  • Python3自带HTTP服务:轻松开启与后台管理
  • 螺狮壳里做道场:老破机搭建的私人数据中心---Centos下docker学习02(yum源切换及docker安装配置)
  • springboot整合Freemarker动态生成JSON
  • Spring Boot与模板方法模式:实现统一的日志处理流程
  • 鸢尾花书实践和知识记录[数学要素3-3几何]
  • 算法专题二: 滑动窗口
  • springboot高校科研论文判定管理系统的设计与实现
  • MySQL-SQL(DDL、DML、DQL、DCL)
  • 掌控板micropython编程实现OLED中显示文本
  • Python位运算的与众不同