在django.db.models中包含了可选的常量,常用的有三种: a.CASCADE级联,删除主表数据的时候,连同删除外键表中的数据。这个就有点狠了,按需求慎用。...b.PROTECT保护,通过抛出一个异常ProtectedError异常,来阻止删除主表中被外键引用的数据。...5.3序列化&反序列化 下面从我们最近推文的项目来简单的理解两个概念。 序列化:将模型对象转换为字典或者json数据的过程。 反序列化:将前端传递的数据保存到模型对象中的过程。...数据库查询 属性: queryset(指定视图所使用的查询集) 方法: get_queryset返回视图所使用的查询集 get_object从视图所使用的查询集中查询指定的对象,默认根据pk进行查询。...团队开发注意事项 浅谈密码加密 Django框架中的英文单词 Django中数据库的相关操作 DRF框架中的英文单词
1.视图 2.路由 3.接口测试 一、序列化 1.步骤 model s.py,定义表与字段,及表关系 serializes.py 中序列化与反序列化 views.py 中写 get,post 等操作...# 注意:调用时有加载顺序,PublishModelSerializer >> PublishModelSerializer # 这里通过 book 中 publish 的外键,提数据...P.*)/$', views.Book.as_view()), ] 7.测试接口 使用 GET 查询结果 ?...def validate(self, attrs): # 同一出版社不能出版同一本书 publish = attrs.get('publish') # 这里的外键已经变成对象...三、序列化与反序列的整合 从数据的安全性和健壮性来考虑,所有的自定义字段不能与 model 的原字段相同 因为序列化是将外键字段作为 Dict,而反序列化会将外键字段作为 Object 1.视图 views.py
Django REST框架构建Web API。...Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...HyperlinkedIdentityField 用超链接的方式有个明确的指向,models 序列化的字段由外键变为超链接的关联形式允许直接通过 pk 跳转到 api 页面。...:, # lookup_field:根据表指定字段,来拼路径,生成链接 # lookup_url_kwarg:默认是pk,(urls.py中的指定的pk)可以不写,反向解析有名分组的名字...: queryset = Article.objects.all() # 查询结果集 serializer_class = ArticleSerializer # 序列化类
本文将深入探讨Django中REST框架的使用,并通过代码实例和解析来展示其强大之处。1. 什么是REST框架?...数据验证通过在序列化器中定义字段,并配置相应的验证规则,可以实现数据的验证。...数据序列化通过使用序列化器,我们可以将复杂的数据结构转换为简单的JSON格式,并进行序列化和反序列化操作。...文件上传通过使用Django REST框架提供的FileField或ImageField字段,我们可以轻松地处理文件上传。...我们从构建API的基础开始,介绍了如何使用Django REST框架来创建强大的API,并通过代码实例和解析展示了其灵活性和易用性。
大家可以在了解了Django框架和DRF框架之后再来看这篇文章。否则会有点不知所云。...,即假使客户端进行POST方式的请求,依然可以通过request.GET获取请求中的查询字符串数据。..., verbose_name='图书') # 外键 cascade是级联,删除主表数据时连同外键表中数据一起删除 1.12.3迁移生成表 1)生成迁移文件 python manage.py makemigrations...filter, exclude参数中可以写查询条件 格式: 属性名__条件名=值 注意:可以写多个查询条件,默认是且的关系 F对象 用于查询时字段之间的比较 from django.db.models...站点就可以进行图片上传 2.DRF框架 2.1目的 利用DRF框架快速的实现RestAPI接口的设计 2.2RestfulAPI接口设计风格 关键点 1)url地址尽量使用名词,不要使用动词 2)请求url
目录 Django rest_framework实现增删改查接口 写接口前的知识准备 __all__的使用方法 序列化类配置 Response二次封装 连表深度查询 单查群查接口 单删群删接口 单增,群增接口...整体单改群改接口 局部修改数据 视图给序列化传参 Django rest_framework实现增删改查接口 本文使用Django的rest_framework框架的ModelSerializer模块和...,前提方法名不能和外键字段名重名 然后在序列化类BookModelSerializer中的meta的fields属性中添加上面定义的方法名,这样就可以实现连表查询。...# 可以通过context将其传入,在序列化校验方法中,self.context就能拿到传入的视图类中的变量 book_ser = serializers.BookModelSerializer...# 可以通过context将其传入,在序列化校验方法中,self.context就能拿到传入的视图类中的变量 book_ser = serializers.BookModelSerializer
通常简称为DRF框架 或 REST framework。 DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。...Django框架学习中创建的demo工程,在settings.py的INSTALLED_APPS中添加’rest_framework’。...3.2见识DRF的魅力 我们仍以在学习Django框架时使用的图书英雄为案例,使用Django REST framework快速实现图书的REST API。 3.2.1....django的路由列表中 4.Serializer序列化器 作用:进行数据的序列化和反序列化 序列化:把对象转换为字典 反序列化:数据校验;数据保存(可以利用这一点实现新增和更新); 4.1使用 定义一个序列化器类...4.4序列化的定义 Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。
外键 PrimaryKeyRelatedField interfaces/serializer.py中创建序列化器 from rest_framework import serializers from...PrimaryKeyRelatedField序列化器字段 序列化输出的值为外键ID值 序列化输出 from interfaces.models import Interfaces one_interface...反向指定 父表中默认不会生产关联字段(从表),可以手动指定,字段名默认为子表模型类名「小写_set」 projects.serializer.ProjectModelSerializer中添加 interfaces_set...Request 对Django中的HttpRequest进行拓展 根据请求头中的Content-Type自动进行解析 无论前端发送那种格式数据,都可以以相同的方式读取 request.data 类似于Django...中的request.GET 获取查询字符串参数 支持Django.request中所有的对象和方法 优化视图-渲染 from rest_framework.response import Response
在django中很著名的一个框架是django-rest-framework,帮我们减少了很多工作量,尤其在序列化与反序列化成我们需要的格式帮了我们省了很多事 在这里就记录一下个人的学习过程 django-rest-framework...://www.django-rest-framework.org/api-guide/serializers/ 创建serializers.py在其中实现序列化类 由于这个序列化是和我们的模型想对应的相关...请注意,使用超链接的API时,您需要确保双方的API意见和串行类设置查找字段,如果你需要使用一个自定义值 在get_queryset()中实现的是按照name查询的,因为很多时候客户端并不知道自己的id...math = models.FloatField() english = models.FloatField() chiness = models.FloatField() 我们在这里没有使用外键...,毕竟现在很多大牛说不使用外键,在应用中控制逻辑嘛 当然这里也可以使用models.ForeignKey,会让操作变得更简单的一点 serializers.py为: from rest_framework
Django rest Framework入门 一 :手工实现常见API中记录了如何手工基于Django实现常见的API类型,这篇笔记记录一下DRF框架简单使用的体验。...'rest_framework', ] 编写序列化器 序列化和反序列化的意思其实就是利用Django的Model将数据库中的数据进行一定的格式修改(比如dict变成json)之后返回给api请求者和将从...的时候反复写的利用model从数据库获取数据和将从api获取到的数据写入数据库的过程,下面列举了一个查询某一本具体的书的例子。...两个视图类所有的功能,由此可以见DRF框架还是很方便的,减少了很多重复代码的编写工作。...修改url配置 demo中的跟路由配置可以不作任何修改 以books/开头的url会导向book app中的路由,如下: from django.contrib import admin from django.urls
添加rest_framework应用 我们利用在Django框架学习中创建的demo工程,在settings.py的INSTALLED_APPS中添加'rest_framework'。 ?...= BookInfo fields = '__all__' model 指明该序列化器处理的数据字段从模型类BookInfo参考生成 fields 指明该序列化器包含模型类中的哪些字段...): queryset = BookInfo.objects.all() serializer_class = BookInfoSerializer queryset 指明该视图集在查询数据时使用的查询集...serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器 3....至此,是不是发现Django REST framework很好用!
Django简介 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。...Django REST Framework 简介 Django REST Framework,是一套基于Django的REST风格的框架。...'rest_framework', 'api', ] rest_framework权限配置 默认的权限策略可以设置在全局范围内,通过DEFAULT_PERMISSION_CLASSES设置。...登录我们创建的账户,可以看到如下界面: ? 数据序列化 Serializers用于定义API的表现形式,如返回哪些字段、返回怎样的格式等。这里序列化Django自带的User和Group。...在Django REST framework中,ViewSets用于定义视图的展现形式,例如返回哪些内容,需要做哪些权限处理。
反过来先操作表B后操作表A,更满足逻辑思维,一样可以执行。通过逻辑将A、B表进行连表查询,不会有任何异常。如两张表建立了一对一外键字段,外键在A表,那么先往B表写数据就更合理。...更合理) """ Django orm中外键字段属性详解 在建表之前我们对外键字段属性进行了解: 1)related_name在外键中设置外键反向查询的字段名:正向找字段名,反向找related_name...子序列化 Django中的子序列化的功能是:通过跨表查询数据然后对跨表查到的数据反序列化。...如果涉及到通过外键进行跨表查询,然后再将查询数据反序列化到前台就需要用到子序列化,比如下面的例子:我们查询出版社信息的时候连带将book表中的该出版社所出版过的书名一并查出来。...子序列化的使用方法及注意事项: 1)只能在序列化中使用 2)字段名必须是外键(正向反向都可以)字段,相对于自定义序列化外键字段,自定义序列化字段不能参与反序列化,而子序列化必须为外键名,子序列化字段不写入数据库
在Django中,我们通过model-view-template实现了后端和前端的通信。但前端未必是用Django的template实现的,也可以用单独的前端框架(如vue)实现。...关于如何设计出符合REST风格的API,可以参考阮一峰的《RESTful API 设计指南》 那么用DRF实现的就是RESTful API吗?其实DRF没有强制实现。...“Django REST 框架”这个名字是在 2011 年初决定的,选择它只是为了确保开发人员很容易找到这个项目。在整个文档中,我们尝试使用更简单、技术上正确的术语“Web API”。...', namespace='rest_framework')) ] 因为我们使用的是ViewSet而不是view,所以我们可以通过简单地将ViewSet注册到Router来自动生成API的 URL conf...可以发现,和Django程序相比,我们没有写template做前端的显示,而是写了序列化类提供API。前端可以分离出来,使用API来和后端通信。
Django REST Framework是基于Django的一个用于构建Web API的框架。它提供了许多用于构建Web API的工具和实用程序,其中最常用的是类视图。...在视图中,我们指定了要使用的查询集和序列化器,并使用list,create和destroy方法处理GET,POST和DELETE请求。...我们指定了要使用的查询集和序列化器,并使用ModelViewSet提供的默认实现处理常见API操作。...我们指定了要使用的查询集和序列化器,并使用ReadOnlyModelViewSet提供的默认实现处理GET请求。ViewSetViewSet是一种通用的类视图,它提供了处理HTTP请求的通用方式。...总结在Django REST Framework中,类视图是一种方便的方式来编写Web API视图,并带有许多有用的内置功能。
POST - 创建 PUT - 编辑 DELETE - 删除 今天要讲的是rest_framework框架,它是基于Django的,帮助我们快速开发符合RESTful规范的接口框架。...我们先来说说序列化器这个东西。在rest_framework中,序列化器是一个位于客户端和后台之间的中间层。...下面我们来看看具体的序列化器 序列化器的类在rest_framework.serializers中,最基本的一个序列化器类是Serializer。...我们通过继承Serializer类定义自己的序列化器类。通常在类中需要指出本序列化器所有需要进行处理的字段名和字段类型,看起来有点像在定义一个Model或者一个Form。 OK, 开战吧。...然后做接口: 实现序列化器 我们使用Django REST framework 提供的序列化器简化代码。
Django Rest Framework 序列化(中) ? 一、使用 ModelSerializer 组件 ① 包装 Serializer ?...ModelSerializer 与 Serializer 区别在于:ModelSerializer 支持了 Serializer 中所有的操作,并且通过自动生成所有数据字段与序列化类的一一对应关系。...② ModelSerializer 深度控制 在上面,看到在进行联表查询的时候,只能获取到外键关联对象,在当前表中存储的 id,怎样拿到外键关联对象的具体信息。 ?...在 restful 规范中,规定应该给出相应的详情链接,可以通过 url 拼接,在 django rest framework 中也有相对应的实现。...# view_name 参数 进行传参的时候是参考路由匹配中的 name 与 namespace 参数 # lookup_field 参数是根据在 UserInfo 表中的联表查询字段 group_id
目录 需求 创建一个Django项目 配置基础东西 连接mysql 使用Django_rest 解决跨域 建模(model里面写实体类) admin.py文件里面的创建 手动在后台管理系统里面添加相关数据...,需要排序 根据生产厂商进行选择 view url 前段传参 商品的详情 view url 前端如何传参 查询的外键需要返回具体的name值,而不是id 第一种方法 第二种方法 实现用户的登录 用户的详情...还有收货地址模块 创建一个Django项目 用pycharm直接创建一个Django项目 配置基础东西 连接mysql 使用Django_rest 解决跨域 第一步 第二部 第三部.../ 那么既然项目可以使用分页,前端如何使用分页功能呢?...这个表有一个外键和用户关联。
,将模型对象传入 2) data:用于反序列化,将被反序列化的数据传入 3) 除了instance和data参数外,在构造Serializer对象时,还可通过context参数额外添加数据 serializer...: '1986-07-24', 'bread': 36, 'bcomment': 40, 'image': None} # 如果被序列化的有多条数据的查询集 QuerySet,可以通过添加 many=...验证失败,可以通过序列化器对象的 errors 属性获取错误信息,返回一个字典, 包含字段和字段的错误,若是非字段错误,可以通过修改 REST framework 配置中的 NON_FIElD_ERRORS_KEY...APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework...filter_backends 过滤控制后端 详情页视图的使用 Lookup_field 查询单一数据对象使用的条件字段,默认为‘pk’ Look_url_kwarg 查询单一数据时 url 中的参数关键字名称
背景:drf的序列化器给模型输出带来了便利但是对于多对多字段网上查询的内容却是很少(也有可能是本人不会搜答案)经过我多个日夜的摸索,终于实现了我的需求,现将自己的心得记录一下说下我的需求:定义一个订单模型里面的订单...orderId 是自动生成的UUID订单的区域是外键,下单人也是外键,菜品orderMenu是一个多对多字段(其实通过我查到的方法说的都是外键字段就可以实现但是个人觉得菜品和订单应该是多对多会比较好理解...(serializers.ModelSerializer): # 进一步自定义中间表字段的序列化表示,可以在 to_representation 方法中进行处理 def to_representation...查找外键表传入查找的字段并用data序列话出来 reason = OrderCenterThoughSerializer(instance.ordercenterthough_set.get...在写的时候又发现了代码中的几个bug1、可以更新不是订单人的菜品2、更新的时候只能更新已经生成的菜品内容,因为无法为订单添加新的菜品,这个涉及到中间表中的对应关系已经确定了。
领取专属 10元无门槛券
手把手带您无忧上云