Django REST framework 简介1

Django请求的生命周期:

Wsgi解析-----django框架-----中间件----视图函数------中间件-----前端
总路由进行匹配-------子路由------视图处理------返回------前端
客户端请求(遵循http协议,发送请求报文(请求行,请求头,请求体))--------(解析报文)web服务器(通过wsgi协议)--------django框架(根据报文封装request请求对象方便我们操作-------一次从上到下调用中间件中的process_request方法-------URL匹配-------依次调用中间件的process_view方法---------调用视图-------一次从下到上调用中间件的方法process_response方法)-----------返回响应给Web服务器(Web服务器构造响应报文)-----------返回响应报文给客户端
中间件:
在请求前或请求后必须要做的可以放到中间中执行
CSRF:跨站请求伪造 .403forbiden, dev中middleware
X-Csrftoken:表单里娶不到在请求头里取
Csrftoken:从cookie里取
对比两个值X-Csrftoken,Csrftoken
前后端不分离:后端返回完整的HTML页面给后端,只适合纯网页,手机APP不能展示HTML页面
Restful设计风格
1.URL路径使用名词复数
2.同一个URL,不同的方法(get post put delete)代表不同的操作
3.查询字符串放过滤参数:页码数,page,orderby
4.相应数据格式:大部分为json
5.响应状态码:
200:获取或修改成功
201:新增成功
204:删除成功
400:参数有误
6:返回数据格式:前端需要什么,返回什么
jsonresponse数据为列表时需要jsonresponse([…],safe=False)
思路
确定请求方式和URL地址
确定请求参数和参数传递方式
确定响应数据和响应格式以及响应状态码
视图工作:
把请求数据转换为模型类对象
操作数据库
将模型类对象转换为响应的数据(如JSON格式)
序列化:
把对象转换为字典或json的过程
把一种格式转换为另一种格式
反序列化
把字典或json转化为对象的过程
和序列化相反的过程
环境安装
pip install djangorestframework 》 settings apps注册 》
DRF框架使用过程:
1、在子应用中创建serializers.py文件

class BookInfoSerializer(serializers.ModelSerializer):
    """图书序列化器类"""
    class Meta:
        model = BookInfo  #对应的模型类
        fields = '__all__'  #依据模型类的哪些字段生成对应序列化器类的字段

2、在views.py中创建BookInfoViewSet,是一个视图集合

from rest_framework.viewsets import ModelViewSetfrom booktest.serializers import BookInfoSerializerfrom booktest.models import BookInfo
class BookInfoViewSet(ModelViewSet):
    """视图集"""
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer
queryset:指定视图集在进行数据查询时所使用的查询集
serializer_class:指定视图集在进行序列化或反序列化时所使用的序列化

器类
3、配置路由

from booktest import views
from rest_framework.routers import DefaultRouter
urlpatterns = [
    ...
]

路由Router: 动态生成视图集中处理函数的url配置项

router = DefaultRouter() # 路由Router
router.register(‘books’, views.BookInfoViewSet, base_name=‘books’) # 向路由Router中注册视图集
urlpatterns += router.urls # 将路由Router生成的url配置信息添加到django的路由列表
序列化:对象----》字典或json
反序列化:类比请求数据字典----》数据检验—》数据保存数据库等(新增、更新)
序列化容器定义:

模型类定义from django.db import models

class 模型类名(models.Model):

模型类字段 = models.字段类型(选项参数)

序列化器类定义from rest_framework import serializers

class 序列化器类名(serializers.Serializer):
# 序列化器字段 = serializers.字段类型(选项参数)

单独运行python:设置环境变量------》manage.py中的环境变量

设置Django运行所依赖的环境变量

import os
if not os.environ.get('DJANGO_SETTINGS_MODULE'):
  os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'drf_demo.settings')

让Django进行一次初始化import django

django.setup()

序列化容器:
容器字段对应:对象的属性名、字典数据的key
1、创建容器对象

serializer = UserSerializer(instance=None, data={}, **kwargs)

2、序列化传参:对象

serializer = UserSerializer(user)
 serializer.data

3、反序列化传参:字典

serializer = UserSerializer(data=<ਁَ>) 
serializer.is_valid() 
serializer.errors 
serializer.validated_data

通用参数选项
readonly:为True,序列化(转字典)使用
writeonly:为true,反序列化(转对象)使用
required:默认true必传,反序列化时(转对象)允许不传设置false,有默认值时required自动为false
default:设置默认值,
Max_value :反序列化(转对象)时:校验数字最大值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值